我有以下代码。
@BeforeClass
public static void setUpOnce() throws InterruptedException {
fail("LOL");
}
还有其他一些方法是@Before, @After, @Test或者@AfterClass方法.
在启动时,测试并没有失败,因为它似乎应该。谁能帮帮我?
我有JUnit 4.5
该方法在立即调用setUp()时失败,该方法被注释为@before.Class def是 。
public class myTests extends TestCase {
不要同时扩展TestCase和使用注解! 如果你需要创建一个带有注解的测试套件,请使用RunWith注解,比如。
@RunWith(Suite.class)
@Suite.SuiteClasses({ MyTests.class, OtherTest.class })
public class AllTests {
// empty
}
public class MyTests { // no extends here
@BeforeClass
public static void setUpOnce() throws InterruptedException {
...
@Test
...
(习惯上:类名用大写字母)
该方法 必须是静态的 而不是直接调用fail(否则其他方法不会被执行)。
下面的类显示了所有标准的JUnit 4方法类型。
public class Sample {
@BeforeClass
public static void beforeClass() {
System.out.println("@BeforeClass");
}
@Before
public void before() {
System.out.println("@Before");
}
@Test
public void test() {
System.out.println("@Test");
}
@After
public void after() {
System.out.println("@After");
}
@AfterClass
public static void afterClass() {
System.out.println("@AfterClass");
}
}
而输出结果是(并不奇怪)。
@BeforeClass
@Before
@Test
@After
@AfterClass
确保你从正确的包中导入了@Test。
请注意,这是为解决。如果你的@Before, @Atter, 等等根本没有被调用.
请确保.Before, @Atter等没有被调用。
为了使之前注释的函数能够运行,我不得不做以下工作:如果你使用Maven,添加一个对Junit 4.11+的依赖。
<properties>
<version.java>1.7</version.java>
<version.log4j>1.2.13</version.log4j>
<version.mockito>1.9.0</version.mockito>
<version.power-mockito>1.4.12</version.power-mockito>
<version.junit>4.11</version.junit>
<version.power-mockito>1.4.12</version.power-mockito>
</properties>
和依赖关系。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${version.junit}</version>
<scope>test</scope>
</dependency>
.
.
.
</dependencies>
确保你的Junit Test类没有扩展The TestCase类,因为这将导致与旧版本的重叠。
public class TuxedoExceptionMapperTest{
protected TuxedoExceptionMapper subject;
@Before
public void before() throws Exception {
subject = TuxedoExceptionMapper.getInstance();
System.out.println("Start");
MockitoAnnotations.initMocks(this);
}
}