Questions tagged «junit4»

流行的Junit Java单元测试框架的版本4

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 


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的作者不希望使用订单功能,为什么呢?

11
如何使用JUnit Test注释声明异常消息?
我写了一些带有@Test注释的JUnit测试。如果我的测试方法引发了一个已检查的异常,并且我想与该异常一起声明该消息,是否可以使用JUnit @Test注释来做到这一点?AFAIK,JUnit 4.7不提供此功能,但是将来的版本会提供吗?我知道在.NET中,您可以断言消息和异常类。在Java世界中寻找类似的功能。 这就是我要的: @Test (expected = RuntimeException.class, message = "Employee ID is null") public void shouldThrowRuntimeExceptionWhenEmployeeIDisNull() {}



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 …


7
Java的assertEquals方法可靠吗?
我知道==比较两个时会有一些问题Strings。看来这String.equals()是一个更好的方法。好吧,我正在进行JUnit测试,而我倾向于使用assertEquals(str1, str2)。这是断言两个字符串包含相同内容的可靠方法吗?我会使用assertTrue(str1.equals(str2)),但是那样的话,您将无法获得预期的失败值和实际值。 在相关说明中,是否有人链接到页面或线程以清楚地解释问题所在str1 == str2?
199 java  string  junit  junit4 

4
Junit @Rule如何工作?
我想编写大量代码的测试用例,我想了解JUnit @Rule批注功能的详细信息,以便可以将其用于编写测试用例。请提供一些好的答案或链接,通过一个简单的示例详细说明其功能。
195 java  junit  junit4  junit-rule 

6
模拟系统类时出现Mockito + PowerMock LinkageError
我有这样的代码片段: @RunWith(PowerMockRunner.class) @PrepareForTest({Thread.class}) public class AllMeasuresDataTest { @Before public void setUp() throws Exception { } @Test public void testGetMeasures() { AllMeasuresData measure = new AllMeasuresData(); assertEquals(measure.getMeasures(), null); HashMap<String, Measure> map = new HashMap<String, Measure>(); measure.setMeasures(map); assertEquals(measure.getMeasures(), map); measure.setMeasures(null); assertEquals(measure.getMeasures(), null); } @Test public void testAllMeasuresData() throws IOException { ClassLoader loader …

7
为什么我应该使用Hamcrest-Matcher和assertThat()而不是传统的assertXXX()-方法
当我查看Assert类JavaDoc中的示例时 assertThat("Help! Integers don't work", 0, is(1)); // fails: // failure message: // Help! Integers don't work // expected: is <1> // got value: <0> assertThat("Zero is one", 0, is(not(1))) // passes 可以说,我看不出有什么大的优势assertEquals( 0, 1 )。 如果结构变得更复杂,但是对于消息,这很好,但是您看到更多的优势了吗?可读性?
153 java  testing  junit  junit4  hamcrest 


6
Junit:拆分集成测试和单元测试
我继承了Junit测试的负载,但是这些测试(除了大多数无法正常工作的测试)是实际单元测试和集成测试(需要外部系统,数据库等)的混合。 因此,我正在尝试一种将它们实际分离出来的方法,以便可以快速好地运行单元测试,然后进行集成测试。 选项是.. 将它们分成单独的目录。 从v3迁移到Junit4,并注释类以将它们分开。 使用文件命名约定来告诉类是什么,即AdapterATest和AdapterAIntergrationTest。 3的问题是Eclipse可以选择“运行所选项目/程序包或文件夹中的所有测试”。因此,仅运行集成测试将非常困难。 2:冒着开发人员可能开始在单元测试类中编写集成测试的风险,并且变得一团糟。 1:似乎是最巧妙的解决方案,但是我的直觉说必须有更好的解决方案。 这就是我的问题,您如何将集成测试和适当的单元测试分开?

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.