junit 3中的类拆解?

时间:2009-10-29 21:14:44

标签: java junit junit4

我们有很多使用JUnit 3 编写的集成测试,不过我们现在使用 4.4 运行它们。其中一些需要一个tearDown方法,该方法在类中的所有测试完成后运行(以释放一些公共资源)。

我看到这可以在junit 4中使用@AfterClass(org.junit)完成。但是,将其混合到扩展TestCase(junit.framework。*)的现有junit 3测试中似乎不起作用。 [BTW有迁移工具吗?问题264680表明一年前没有一个。]

我已经看到过将junit.extensions.TestSetup用于此类事情。我对此的简要测试似乎不起作用。有什么例子吗?

2 个答案:

答案 0 :(得分:18)

找到我自己的问题的答案:)在发布我的问题之前我曾经尝试过这个问题,但它并不适用于我。但我现在意识到这是因为我们的测试框架调用junit的方式与默认方式不同,所以它没有调用以下解决方案中所需的“套件”方法。在Eclipse中,如果我使用捆绑的junit runner直接执行一个Test / TestCase,它运行正常。

在junit 3中每个类进行一次设置/拆卸的方法是使用TestSuite。以下是junit.org上的一个示例:

Is there a way to make setUp() run only once?

public static Test suite() {
    return new TestSetup(new TestSuite(YourTestClass.class)) {

        protected void setUp() throws Exception {
            System.out.println(" Global setUp ");
        }
        protected void tearDown() throws Exception {
            System.out.println(" Global tearDown ");
        }
    };
}

答案 1 :(得分:2)

在JUnit 4中,您的测试类不需要扩展TestCase。相反,您必须确保测试类的名称与*Test匹配,并且每个测试方法都使用@Test进行注释。您是否尝试过进行这些更改,然后将@AfterClass注释添加到相关方法中?

有一些注释可以替换您当前使用的大多数/所有功能TestCase