Questions tagged «junit»

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

30
您如何断言在JUnit 4测试中抛出了某个异常?
如何惯用JUnit4来测试某些代码引发异常? 虽然我当然可以做这样的事情: @Test public void testFooThrowsIndexOutOfBoundsException() { boolean thrown = false; try { foo.doStuff(); } catch (IndexOutOfBoundsException e) { thrown = true; } assertTrue(thrown); } 我记得在这种情况下,有一个批注或一个Assert.xyz或不那么杂乱无章的JUnit东西。
1998 java  exception  junit  junit4  assert 


11
为什么JUnit不提供assertNotEquals方法?
有人知道为什么JUnit 4提供 assertEquals(foo,bar)但不assertNotEqual(foo,bar)方法吗? 它提供了assertNotSame(对应于assertSame)和assertFalse(对应于assertTrue),因此它们似乎没有包含在内就显得很奇怪assertNotEqual。 顺便说一句,我知道JUnit插件提供了我正在寻找的方法。我只是出于好奇而问。
429 java  junit  assert 

29
Maven找不到要运行的JUnit测试
我有一个Maven程序,它可以正常编译。当我运行mvn test它不会运行任何测试(在TESTs标头下说There are no tests to run.)。 我已经用一个超级简单的设置重新创建了这个问题,该设置将在下面以及运行时的输出中包括 -X。 单元测试可以从eclipse正常运行(都使用其默认的junit软件包,而当我包括maven下载的junit.jar时)。也MVNtest-compile可以在test-classes下正确创建该类。我在带有Maven 3.0.2和Java 1.6.0_24的OSX 10.6.7上运行此代码。 这是目录结构: /my_program/pom.xml /my_program/src/main/java/ClassUnderTest.java /my_program/src/test/java/ClassUnderTestTests.java pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my_group</groupId> <artifactId>my_program</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>My Program</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> …
416 java  maven  junit  junit4  maven-3 

18
如何在JUnit4中按特定顺序运行测试方法?
我想执行带有注释的测试方法 @Test以特定顺序。 例如: public class MyTest { @Test public void test1(){} @Test public void test2(){} } 我想确保每次运行test1()前test2()都运行MyTest,但是找不到类似的注释@Test(order=xx)。 我认为对于JUnit来说这是非常重要的功能,如果JUnit的作者不希望使用订单功能,为什么呢?

12
用于System.out.println()的JUnit测试
我需要为设计欠佳的旧应用程序编写JUnit测试,并将旧的错误消息写入标准输出。该getResponse(String request)方法的行为正确时,将返回XML响应: @BeforeClass public static void setUpClass() throws Exception { Properties queries = loadPropertiesFile("requests.properties"); Properties responses = loadPropertiesFile("responses.properties"); instance = new ResponseGenerator(queries, responses); } @Test public void testGetResponse() { String request = "<some>request</some>"; String expResult = "<some>response</some>"; String result = instance.getResponse(request); assertEquals(expResult, result); } 但是,当XML格式错误或无法理解请求时,它将返回null并将某些内容写入标准输出。 有什么方法可以在JUnit中声明控制台输出?要捕获类似的情况: System.out.println("match found: " + …
370 java  console  junit 

4
有条件地忽略JUnit 4中的测试
好的,因此@Ignore注释非常适合标记不应运行测试用例。 但是,有时我想忽略基于运行时信息的测试。例如,如果我有一个并发测试需要在具有一定数量内核的计算机上运行。如果此测试是在单处理器计算机上运行的,那么我认为仅通过测试是不正确的(因为尚未运行),并且通过测试并破坏构建肯定不是正确的选择。 因此,我希望能够在运行时忽略测试,因为这似乎是正确的结果(因为测试框架将允许构建通过,但记录未运行测试)。我相当确定注释不会给我这种灵活性,并且怀疑我需要为相关类手动创建测试套件。但是,文档中没有提及任何内容,并且通过API查看还不清楚如何以编程方式完成此操作(即,如何以编程方式创建Test与@Ignore注释所创建的实例相同的实例或类似实例?)。 如果有人在过去做过类似的事情,或者对我还能做些什么有一个聪明的主意,那么我很乐意听到。

9
Mockito:试图窥探方法是在调用原始方法
我正在使用Mockito 1.9.0。我想在JUnit测试中模拟类的单个方法的行为,所以我有 final MyClass myClassSpy = Mockito.spy(myInstance); Mockito.when(myClassSpy.method1()).thenReturn(myResults); 问题是,在第二行中,myClassSpy.method1()实际上是在被调用,从而导致异常。我使用模拟的唯一原因是,以便以后每次myClassSpy.method1()调用时,都不会调用real方法,并且myResults将返回对象。 MyClass是一个接口,并且是该接口myInstance的实现(如果有关系的话)。 我需要怎么做才能纠正这种间谍行为?
349 java  junit  mockito 





23
将Mockito模拟注入Spring bean
我想将Mockito模拟对象注入到Spring(3+)bean中,以进行JUnit的单元测试。我的bean依赖项当前是通过使用@Autowired在私有成员字段上注释来。 我已经考虑过使用 ReflectionTestUtils.setField但是我希望注入的bean实例实际上是一个代理,因此没有声明目标类的私有成员字段。我不希望为依赖项创建一个公共的setter,因为我将纯粹出于测试目的而修改接口。 我遵循了Spring社区提供的一些建议,但是未创建该模拟程序,并且自动装配失败: <bean id="dao" class="org.mockito.Mockito" factory-method="mock"> <constructor-arg value="com.package.Dao" /> </bean> 我当前遇到的错误如下: ... Caused by: org...NoSuchBeanDefinitionException: No matching bean of type [com.package.Dao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: { @org...Autowired(required=true), @org...Qualifier(value=dao) } at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901) at org...DefaultListableBeanFactory.doResolveDependency(D...y.java:770) 如果将constructor-arg值设置为无效值,则启动应用程序上下文时不会发生错误。



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.