代码之家  ›  专栏  ›  技术社区  ›  Tony Tanzillo

六月三日的课堂拆卸?

  •  8
  • Tony Tanzillo  · 技术社区  · 15 年前

    我们有很多使用JUnit编写的集成测试 尽管我们现在用 四点四 . 其中一些需要在类中的所有测试完成后运行的拆卸方法(以释放一些公共资源)。

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

    我曾经提到过使用junit.extensions.testsetup来处理此类问题。我对此的简短测试似乎没有效果。有什么例子吗?

    2 回复  |  直到 15 年前
        1
  •  18
  •   Tony Tanzillo    15 年前

    找到了我自己问题的答案:)我在发表我的问题之前试过这个方法,但它对我不起作用。但我现在意识到这是因为我们的测试框架调用JUnit的方式与默认方式不同,所以它没有调用下面解决方案中需要的“suite”方法。在Eclipse中,如果我使用捆绑的JUnit运行程序直接执行一个测试/测试用例,那么它运行得很好。

    在JUnit3中,每个类执行一次这个设置/拆卸的方法是使用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 ");
            }
        };
    }
    
        2
  •  3
  •   Dónal    15 年前

    在JUnit4中,您的测试类不需要扩展 TestCase . 相反,您必须确保测试类的名称匹配 *Test 每个测试方法都有注释 @Test . 是否尝试进行这些更改,然后添加 @AfterClass 相关方法的注释?

    有注释可替换您当前可能使用的大多数/所有功能 测试用例 .