我有三个JUnit测试类,它们都有一些共同的代码,包括相同的setup()方法.因此,我将此代码分解到自己的类中,该类扩展了TestCase,现在有三个早期的JUnit测试类扩展了这个新类.新的超类本身不包含任何测试.
但是,在我们的构建中,JUnit运行所有JUnit测试类,包括没有测试的新超类.它给出了这个错误:
junit.framework.AssertionFailedError: No tests found in com.acme.ControllerTest
Run Code Online (Sandbox Code Playgroud)
我可以通过创建一些在ControllerTest中什么都不做的简单测试来摆脱这个错误.但是有更清洁的方法来解决这个问题吗?
这适合我
public abstract class BaseTest extends TestCase {
public void setUp(){
System.out.println("before called");
}
}
public class Test1 extends BaseTest {
public void test() {
Assert.assertTrue(true);
System.out.println("Test1");
}
}
public class Test2 extends BaseTest {
public void test() {
Assert.assertTrue(true);
System.out.println("Test1");
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是
before called
Test2
before called
Test1
Run Code Online (Sandbox Code Playgroud)
对于JUnit4,您甚至不需要将基类抽象化.您可以使用以下内容
public class BaseTest {
@Before
public void setUp(){
System.out.println("before called");
}
}
public class Test1 extends BaseTest {
@Test
public void test() {
Assert.assertTrue(true);
System.out.println("Test1");
}
}
public class Test2 extends BaseTest {
@Test
public void test() {
Assert.assertTrue(true);
System.out.println("Test1");
}
}
Run Code Online (Sandbox Code Playgroud)
我强烈建议使用JUnit 4.使用注释意味着你打破了一些可能让人困惑的继承依赖.
| 归档时间: |
|
| 查看次数: |
8112 次 |
| 最近记录: |