Java JUnit3中的类拆卸?

Java JUnit3中的类拆卸?,java,junit,junit4,Java,Junit,Junit4,我们有很多使用JUnit3编写的集成测试,尽管我们现在使用4.4运行它们。其中一些需要在类中的所有测试完成后运行tearDown方法(以释放一些公共资源) 我发现这可以在JUnit4中通过@AfterClass(org.junit)实现。然而,将其与扩展TestCase(junit.framework.*)的现有JUnit3测试混合似乎不起作用。[顺便说一句,有没有迁移工具?问题表明一年前没有迁移工具。] 我看到有人提到过使用junit.extensions.TestSetup来实现这类功能。我

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

我发现这可以在JUnit4中通过@AfterClass(org.junit)实现。然而,将其与扩展TestCase(junit.framework.*)的现有JUnit3测试混合似乎不起作用。[顺便说一句,有没有迁移工具?问题表明一年前没有迁移工具。]


我看到有人提到过使用junit.extensions.TestSetup来实现这类功能。我对此的简短测试似乎不起作用。有什么例子吗?

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


TestCase

中,有注释可以替换您当前使用的大多数/所有功能。找到了我自己问题的答案:)在发布问题之前,我曾短暂尝试过这一点,但它对我无效。但我现在意识到,这是因为我们的测试框架调用junit的方式与默认方式不同,所以它没有调用下面的解决方案所需的“suite”方法。在Eclipse中,如果我使用捆绑的junit runner直接执行一个测试/测试用例,那么它可以正常运行

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


假设我们目前没有时间手动转换和验证所有测试(并培训所有相关的开发人员使用junit 4注释),但只想解决少数需要junit 3中的AfterClass等价物的类。与尝试获得类范围的拆卸并行,我还尝试将一个类转换为JUnit4注释。由于Eclipse/命令行认为我没有任何测试要运行,所以运气还不太好。我已经更新了我的答案,我之前给出的建议完全错误,我理应被否决。请按照上面的说明重试。您是否在Android上运行此操作?我有完全相同的代码,但我得到一个ClassNotFound异常。您已经面对过这个问题了吗?您的TestClass是否扩展了TestCase?我现在可以用这段代码执行测试,但似乎没有调用suite()方法。您是如何调用此方法的?我想它会被称为automatically@FelipeMosso如果您告诉JUnit(或您的IDE)运行一个JUnit3样式的测试类,并且该类有一个公共静态
suite()
方法,该方法返回一个
test
(或测试的子类),那么将调用
suite()
方法来生成该套件。但是如果您自己手动创建套件,则需要确保使用suite()方法(可能通过使用接受类的
TestSuite
构造函数)
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 ");
        }
    };
}