繁体   English   中英

超级JUnit类,没有测试用例

[英]Super JUnit classes with no test cases

我有三个JUnit测试类,它们都有一些共同的代码,包括相同的setup()方法。 因此,我将此代码分解到自己的类中,该类扩展了TestCase,现在有三个早期的JUnit测试类扩展了这个新类。 新的超类本身不包含任何测试。

但是,在我们的构建中,JUnit运行所有JUnit测试类,包括没有测试的新超类。 它给出了这个错误:

junit.framework.AssertionFailedError: No tests found in com.acme.ControllerTest

我可以通过创建一些在ControllerTest中什么都不做的简单测试来摆脱这个错误。 但是有更清洁的方法来解决这个问题吗?

这适合我

JUnit 3

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");
    }   
}

我得到的输出是

before called
Test2
before called
Test1

JUnit 4

对于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");
    }   
}

我强烈建议使用JUnit 4.使用注释意味着你打破了一些可能让人困惑的继承依赖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM