Questions tagged «junit»

流行的Java和Scala单元测试框架。最新版本的JUnit 5支持基于注释的丰富测试和参数化测试。考虑与Java或Scala标记结合使用以指示您的用例。

8
不推荐使用AndroidJUnit4.class:如何使用androidx.test.ext.junit.runners.AndroidJUnit4?
我在进行仪器测试时 @RunWith(AndroidJUnit4.class) 从 import androidx.test.runner.AndroidJUnit4; 为了建立我的测试用例。现在,这条线被标记为与提示使用过时AndroidJUnit4的 import androidx.test.ext.junit.runners.AndroidJUnit4 但是,如果我尝试AndroidJUnit4从命名包中导入,ext则会出现错误,无法解决。 您有什么想法,应在gradle中包括哪些软件包来解决此问题?

14
获取JUnit 4中当前正在执行的测试的名称
在JUnit 3中,我可以这样获得当前正在运行的测试的名称: public class MyTest extends TestCase { public void testSomething() { System.out.println("Current test is " + getName()); ... } } 它将显示“当前测试为testSomething”。 JUnit 4中是否有任何现成的或简单的方法可以做到这一点? 背景:显然,我不想只打印测试的名称。我要加载存储在与测试名称相同的资源中的特定于测试的数据。您知道,约定优于配置以及所有这些。
240 java  unit-testing  junit 


6
在单元测试期间填充Spring @Value
我正在尝试为程序中用于验证表单的简单bean编写单元测试。Bean带有注释,@Component并具有使用初始化的类变量 @Value("${this.property.value}") private String thisProperty; 我想为此类中的验证方法编写单元测试,但是,如果可能的话,我希望在不利用属性文件的情况下这样做。我这样做的原因是,如果我从属性文件中提取的值发生更改,我希望这不会影响我的测试用例。我的测试用例正在测试验证值的代码,而不是值本身。 有没有一种方法可以在测试类中使用Java代码来初始化Java类,并在该类中填充Spring @Value属性,然后使用该属性进行测试? 我没有找到这个如何,这似乎是接近,但依然采用的是属性文件。我宁愿全部都是Java代码。


13
在IntelliJ 10.5中运行测试时得到“ NoSuchMethodError:org.hamcrest.Matcher.describeMismatch”
我正在使用JUnit-dep 4.10和Hamcrest 1.3.RC2。 我创建了一个自定义匹配器,如下所示: public static class MyMatcher extends TypeSafeMatcher<String> { @Override protected boolean matchesSafely(String s) { /* implementation */ } @Override public void describeTo(Description description) { /* implementation */ } @Override protected void describeMismatchSafely(String item, Description mismatchDescription) { /* implementation */ } } 当使用Ant从命令行运行时,它工作得很好。但是,从IntelliJ运行时,它失败并显示: java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18) at …

9
Mockito。验证方法参数
我已经对此进行了谷歌搜索,但是没有发现任何相关信息。我有这样的事情: Object obj = getObject(); Mockeable mock= Mockito.mock(Mockeable.class); Mockito.when(mock.mymethod(obj )).thenReturn(null); Testeable testableObj = new Testeable(); testableObj.setMockeable(mock); command.runtestmethod(); 现在,我要验证的mymethod(Object o)是内部runtestmethod()调用了,是通过Object调用的o,而不是其他对象。但是无论我进行哪种验证,我都会始终通过测试,例如: Mockito.verify(mock.mymethod(Mockito.eq(obj))); 要么 Mockito.verify(mock.mymethod(Mockito.eq(null))); 要么 Mockito.verify(mock.mymethod(Mockito.eq("something_else"))); 我总是通过考试。我如何完成该验证(如果可能)? 谢谢。

24
如何使用Mockito模拟最终课程
我有最后一堂课,像这样: public final class RainOnTrees{ public void startRain(){ // some code here } } 我正在像这样的其他班级使用这个班级: public class Seasons{ RainOnTrees rain = new RainOnTrees(); public void findSeasonAndRain(){ rain.startRain(); } } 在我的JUnit测试类中,Seasons.java我想模拟RainOnTrees该类。我该如何使用Mockito做到这一点?
218 java  junit  mockito 


23
带有Junit 4.7的IntelliJ IDEA 预期的JUnit版本3.8或更高版本:”
当我尝试在IntelliJ IDEA中运行以下测试时,收到消息: “ !!!预期的JUnit版本3.8或更高版本:” 应该注意的是,这是我在IntelliJ IDEA 9中正在处理的一个Android项目。 public class GameScoreUtilTest { @Test public void testCalculateResults() throws Exception { final Game game = new Game(); final Player player1 = new Player(); { final PlayedHole playedHole = new PlayedHole(); playedHole.setScore(1); game.getHoleScoreMap().put(player1, playedHole); } { final PlayedHole playedHole = new PlayedHole(); playedHole.setScore(3); game.getHoleScoreMap().put(player1, …

7
Java泛型何时需要<?扩展了T>而不是<T>,切换是否有不利之处?
给定以下示例(将JUnit与Hamcrest匹配器一起使用): Map&lt;String, Class&lt;? extends Serializable&gt;&gt; expected = null; Map&lt;String, Class&lt;java.util.Date&gt;&gt; result = null; assertThat(result, is(expected)); 这不能与以下内容的JUnit assertThat方法签名一起编译: public static &lt;T&gt; void assertThat(T actual, Matcher&lt;T&gt; matcher) 编译器错误消息是: Error:Error:line (102)cannot find symbol method assertThat(java.util.Map&lt;java.lang.String,java.lang.Class&lt;java.util.Date&gt;&gt;, org.hamcrest.Matcher&lt;java.util.Map&lt;java.lang.String,java.lang.Class &lt;? extends java.io.Serializable&gt;&gt;&gt;) 但是,如果我将assertThat方法签名更改为: public static &lt;T&gt; void assertThat(T result, Matcher&lt;? extends T&gt; matcher) 然后编译工作。 所以三个问题: 为什么当前版本完全不编译?尽管我在这里含糊地理解了协方差问题,但如果必须的话,我当然无法解释。 …
205 java  generics  junit 

25
如何在记录器中对消息执行JUnit断言
我有一些正在测试的代码,它们呼吁Java记录器报告其状态。在JUnit测试代码中,我想验证此记录器中是否输入了正确的日志条目。遵循以下内容: methodUnderTest(bool x){ if(x) logger.info("x happened") } @Test tester(){ // perhaps setup a logger first. methodUnderTest(true); assertXXXXXX(loggedLevel(),Level.INFO); } 我想可以使用专门改编的记录器(或处理程序或格式化程序)来完成此操作,但我希望重用已存在的解决方案。(而且,老实说,我不清楚如何从记录器中获取logRecord,但是假设这是可能的。)
205 java  logging  junit  assert 



5
如何告诉Mockito模拟对象在下次调用时返回不同的内容?
因此,我正在像这样在类级别上将模拟对象创建为静态变量...在一个测试中,我想Foo.someMethod()返回某个值,而在另一个测试中,我希望它返回一个不同的值。我遇到的问题是,似乎我需要重建模拟才能使其正常工作。我想避免重建模拟,只在每个测试中使用相同的对象。 class TestClass { private static Foo mockFoo; @BeforeClass public static void setUp() { mockFoo = mock(Foo.class); } @Test public void test1() { when(mockFoo.someMethod()).thenReturn(0); TestObject testObj = new TestObject(mockFoo); testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value } @Test public void test2() { when(mockFoo.someMethod()).thenReturn(1); TestObject testObj = new TestObject(mockFoo); …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.