Questions tagged «junit»

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

6
JUnit4 fail()在这里,但是pass()在哪里?
fail()JUnit4库中有一个方法。我喜欢它,但是缺少pass()一种库中不存在的方法。为什么会这样呢? 我发现我可以assertTrue(true)代替使用,但看起来仍然不合逻辑。 @Test public void testSetterForeignWord(){ try { card.setForeignWord(""); fail(); } catch (IncorrectArgumentForSetter ex){ } // assertTrue(true); }
82 java  junit 

10
AssertEquals 2列表忽略顺序
我认为那应该是一个非常简单的问题。但是不知何故我无法在Google中找到答案。 假设我有2个字符串列表。第一个包含“字符串A”和“字符串B”,第二个包含“字符串B”和“字符串A”(注意顺序不同)。我想用JUnit测试它们,以检查它们是否包含完全相同的字符串。 是否有任何断言可以检查忽略顺序的字符串是否相等?对于给定的示例org.junit.Assert.assertEquals抛出AssertionError java.lang.AssertionError: expected:<[String A, String B]> but was:<[String B, String A]> 解决方法是先对列表进行排序,然后再将它们传递给断言。但是我希望我的代码尽可能简单和干净。 我使用Hamcrest 1.3,JUnit 4.11,Mockito 1.9.5。

19
比较具有不同精度级别的Date对象
我有一个JUnit测试失败,因为毫秒不同。在这种情况下,我不在乎毫秒。如何更改断言的精度以忽略毫秒(或我希望将其设置为任何精度)? 我想通过的断言示例: Date dateOne = new Date(); dateOne.setTime(61202516585000L); Date dateTwo = new Date(); dateTwo.setTime(61202516585123L); assertEquals(dateOne, dateTwo);
81 java  junit 

9
在JUnit中声明正则表达式匹配
RubyTest::Unit有一个很好的assert_matches方法,可以在单元测试中使用它来断言正则表达式与字符串匹配。 JUnit中是否有类似的东西?目前,我这样做: assertEquals(true, actual.matches(expectedRegex));
81 java  regex  junit 

6
如何立即重新运行失败的JUnit测试?
有没有办法让JUnit规则或类似的东西通过尝试再次运行它,使每一次失败的测试都有第二次机会。 背景:我有大量用JUnit编写的Selenium2-WebDriver测试集。由于时间安排非常激进(单击后仅等待很短的时间),某些测试(100个测试中的1个,总是一个不同的测试)可能会失败,因为服务器有时响应速度会变慢。但是我不能将等待期定得足够长,因为它肯定足够长,因为这样测试将永远进行下去。)-因此,对于这种用例,我认为可接受的测试是绿色的,即使它需要一秒钟尝试。 当然,最好是三分之二(如果失败的测试重复3次,并且如果其中两个测试是正确的,则将它们视为正确),但这将是未来的改进。
81 java  testing  junit 

7
具有模拟用户输入的JUnit测试
我正在尝试为需要用户输入的方法创建一些JUnit测试。被测方法看起来类似于以下方法: public static int testUserInput() { Scanner keyboard = new Scanner(System.in); System.out.println("Give a number between 1 and 10"); int input = keyboard.nextInt(); while (input < 1 || input > 10) { System.out.println("Wrong number, try again."); input = keyboard.nextInt(); } return input; } 有没有一种方法可以自动将程序传递给int而不是我或其他人在JUnit测试方法中手动执行此操作?像模拟用户输入一样? 提前致谢。

16
Maven 3和JUnit 4编译问题:包org.junit不存在
我正在尝试使用Maven构建一个简单的Java项目。在我的pom文件中,我将JUnit 4.8.2声明为唯一依赖项。Maven仍然坚持使用JUnit版本3.8.1。我如何解决它? 该问题表现为编译失败:“软件包org.junit不存在”。这是由于我的源代码中的import语句。JUnit 4. *中正确的软件包名称是org.junit。*,而在版本3. *中正确的软件包名称是junit.framework。* 我想我已经在http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html上找到了有关问题根源的文档,但该建议似乎是针对Maven专家的。我不知道该怎么办。

17
junit中的java.lang.NoClassDefFoundError
我在junit测试代码中的Java中收到此错误。我在网上查找,它说我需要在类路径中添加junit.jar。 在Eclipse中,我已将其添加到“项目属性”窗口的类路径中,但是仍然收到初始化错误。我该怎么办..? 这是错误的完整记录: java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at …

12
如何在日志中模拟方法e
这里的Utils.java是我要测试的类,下面是在UtilsTest类中调用的方法。即使我嘲笑Log.e方法,如下所示 @Before public void setUp() { when(Log.e(any(String.class),any(String.class))).thenReturn(any(Integer.class)); utils = spy(new Utils()); } 我收到以下异常 java.lang.RuntimeException: Method e in android.util.Log not mocked. See http://g.co/androidstudio/not-mocked for details. at android.util.Log.e(Log.java) at com.xxx.demo.utils.UtilsTest.setUp(UtilsTest.java:41) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at …
80 android  junit  mockito 

18
Mockito-存根方法时发生NullpointerException
因此,我开始为我们的Java Spring项目编写测试。 我使用的是JUnit和Mockito。有人说,当我使用when()... thenReturn()选项时,可以模拟服务,而无需模拟它们。所以我要做的是设置: when(classIwantToTest.object.get().methodWhichReturnsAList(input))thenReturn(ListcreatedInsideTheTestClass) 但是无论我执行哪一个子句,总会得到NullpointerException,这当然是有道理的,因为input为null。 另外,当我尝试从对象模拟另一个方法时: when(object.method()).thenReturn(true) 在那里,我还得到了一个N​​ullpointer,因为该方法需要一个未设置的变量。 但是我想使用when().. thenReturn()解决创建此变量的问题,依此类推。我只想确保,如果有任何类调用此方法,那么无论如何,只要返回true或上面的列表即可。 从我的角度来说这是一个基本的误会,还是还有其他问题? 码: public class classIWantToTest implements classIWantToTestFacade{ @Autowired private SomeService myService; @Override public Optional<OutputData> getInformations(final InputData inputData) { final Optional<OutputData> data = myService.getListWithData(inputData); if (data.isPresent()) { final List<ItemData> allData = data.get().getItemDatas(); //do something with the data and allData return …

6
使用基于Gradle的配置时在Android Studio(IntelliJ)上运行简单的JUnit测试
我Android Studio/IntelliJ用来构建现有Android项目,并想添加一些简单的JUnit单元测试。添加此类测试的正确文件夹是什么? 所述机器人Gradle插件定义的目录结构与src/main/java主源代码和src/instrumentTest/java用于Android测试。 尝试在instrumentTest中添加我的JUnit测试对我不起作用。我可以将其作为Android测试运行(这就是该目录的用途),但这不是我想要的-我只想运行一个简单的JUnit测试。我尝试为此类创建一个JUnit运行配置,但是也没有用-我想是因为我使用的是标记为AndroidTest而不是Source的目录。 如果我创建一个新的源文件夹并将其标记为“项目结构”,则下次IntelliJ从gradle构建文件中刷新项目配置时,该文件夹将被擦除。 在基于gradle的android项目中配置JUnit测试的更合适的方法是IntelliJ什么?为此使用哪种目录结构?

6
在测试过程中注入@Autowired私有字段
我有一个组件安装程序,它实际上是一个应用程序的启动器。它的配置如下: @Component public class MyLauncher { @Autowired MyService myService; //other methods } MyService带有@ServiceSpring注释,并自动连接到我的启动器类中,没有任何问题。 我想为MyLauncher编写一些jUnit测试用例,为此,我启动了一个这样的类: public class MyLauncherTest private MyLauncher myLauncher = new MyLauncher(); @Test public void someTest() { } } 我可以为MyService创建一个Mock对象,然后将其注入测试类中的myLauncher吗?由于Spring正在处理自动装配,因此我目前在myLauncher中没有吸气剂或吸气剂。如果可能的话,我不想添加getter和setter。我可以告诉测试用例使用@Beforeinit方法将模拟对象注入自动装配的变量中吗? 如果我要彻底解决这个问题,请随意说。我还是这个新手。我的主要目标是只具有一些Java代码或注释,即可将模拟对象放入该@Autowired变量中,而无需编写setter方法或使用applicationContext-test.xml文件。我宁愿在.java文件中维护测试用例的所有内容,而不必只为测试维护单独的应用程序内容。 我希望将Mockito用于模拟对象。过去,我是通过使用org.mockito.Mockito和创建对象来完成此操作的Mockito.mock(MyClass.class)。

19
java.lang.Exception:运行JUnit时没有可运行的方法异常
我试图在Linux命令提示符下运行JUnit,/opt/junit/其中包含必要的JARS(hamcrest-core-1.3.jar和junit.jar)和类文件,并且正在使用以下命令来运行JUnit: java -cp hamcrest-core-1.3.jar:junit.jar:. org.junit.runner.JUnitCore TestRunner TestJunit类: import org.junit.Test; import static org.junit.Assert.assertEquals; public class TestJunit { @Test public void testAdd() { String str= "Junit is working fine"; assertEquals("Junit is working fine",str); } } TestRunner: import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { …

7
JUnit如何测试两个List <E>包含相同顺序的相同元素?
语境 我正在为该类编写一个简单的JUnit测试MyObject。 阿MyObject可以从静态工厂方法,需要一个可变参数的创建字符串。 MyObject.ofComponents("Uno", "Dos", "Tres"); 在存在的任何时间MyObject,客户都可以通过该方法检查以List &lt;E&gt;形式创建的参数.getComponents()。 myObject.ofComponents(); // -&gt; List&lt;String&gt;: { "Uno", "Dos", "Tres" } 换句话说,a会MyObject记住并公开使它存在的参数列表。有关此合同的更多详细信息: 的顺序getComponents将与为对象创建选择的顺序相同 允许重复的后续String组件并按顺序保留 行为null未定义(其他代码保证没有null出厂) 对象实例化后,无法更改组件列表 我正在编写一个简单的测试,该测试MyObject从String列表创建一个,并检查它是否可以通过返回相同的列表.getComponents()。我立即执行此操作,但这应该在现实的代码路径中一定距离处发生。 码 这是我的尝试: List&lt;String&gt; argumentComponents = Lists.newArrayList("One", "Two", "Three"); List&lt;String&gt; returnedComponents = MyObject.ofComponents( argumentComponents.toArray(new String[argumentComponents.size()])) .getComponents(); assertTrue(Iterables.elementsEqual(argumentComponents, returnedComponents)); 题 是谷歌番石榴 Iterables.elementsEqual()最好的办法,只要我有库在我的构建路径,那些两个列表比较?我一直在为此苦恼;我应该使用遍及Iterable &lt;E&gt; ..检查大小然后迭代运行的.equals()..的辅助方法还是Internet搜索建议的任何其他方法?比较单元测试列表的规范方法是什么? 我很想获得的可选见解 方法测试是否设计合理?我不是JUnit专家! .toArray()将List &lt;E&gt;转换为E的可变参数的最佳方法是吗?
77 java  junit  guava 

6
如何编写接口的junit测试?
为接口编写junit测试,以便可以将它们用于具体的实现类的最佳方法是什么? 例如,您具有此接口并实现类: public interface MyInterface { /** Return the given value. */ public boolean myMethod(boolean retVal); } public class MyClass1 implements MyInterface { public boolean myMethod(boolean retVal) { return retVal; } } public class MyClass2 implements MyInterface { public boolean myMethod(boolean retVal) { return retVal; } } 您将如何针对该接口编写测试,以便可以将其用于类? 可能性1: public …

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.