我有以下代码:
@BeforeClass
public static void setUpOnce() throws InterruptedException {
fail("LOL");
}
以及其他各种方法,包括@ Before,@ After,@ Test或@AfterClass方法。
测试在启动时不会失败,因为它似乎应该。有人能帮帮我吗?
我有JUnit 4.5
该方法在立即调用setUp()时失败,该注释被注释为@before。 类def是:
public class myTests extends TestCase {
答案 0 :(得分:64)
不要扩展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
...
(按照惯例:带大写字母的类名)
答案 1 :(得分:16)
方法must be static而不是直接调用失败(否则将不会执行其他方法)。
以下类显示了所有标准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
答案 2 :(得分:7)
确保从正确的程序包中导入@Test。
请注意,这是针对以下情况的解决方案:如果根本没有调用您的@ Before,@ Atter等。
答案 3 :(得分:2)
确保:
答案 4 :(得分:2)
检查您的导入。
和 @Test 注释应该从相同的路径导入。
答案 5 :(得分:0)
为了使之前注释的函数能够运行,我必须执行以下操作: 如果您使用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类没有扩展TestCase类,因为这会导致与旧版本重叠:
public class TuxedoExceptionMapperTest{
protected TuxedoExceptionMapper subject;
@Before
public void before() throws Exception {
subject = TuxedoExceptionMapper.getInstance();
System.out.println("Start");
MockitoAnnotations.initMocks(this);
}
}