1

我现在正在编写测试,并且意识到它们一开始都非常相似:

@Test
public void testThisMemoryOperation() {
    Assert.assertEquals("Sanity check failed, shouldn't be anything in memory yet.",
            0, memoryManager.getObjectsInMemory());
    /* ... */
}

@Test
public void testThatMemoryOperation() {
    Assert.assertEquals("Sanity check failed, shouldn't be anything in memory yet.",
            0, memoryManager.getObjectsInMemory());
    /* ... */
}

@Test
public void testTheOtherMemoryOperation() {
    Assert.assertEquals("Sanity check failed, shouldn't be anything in memory yet.",
            0, memoryManager.getObjectsInMemory());
    /* ... */
}

这似乎是不必要的重复。我可以在每个测试开始时用一个简单的方法调用来替换这段代码来运行健全性检查断言,但是有没有像@Rule我可以用来在运行某些方法之前简单地运行这个测试的本机 JUnit 注释?

4

3 回答 3

3

为什么不创建一个简单的方法然后调用它呢?就像是:

private void test() {
    Assert.assertEquals("Sanity check failed, shouldn't be anything in memory yet.", 0, memoryManager.getObjectsInMemory());
}
于 2012-08-03T18:41:56.660 回答
0

如果Verifier Rule已评估,则最接近您的规则,该规则添加了一个 check after 语句。如果您看一下制作 PreconditionRule 的源代码,将会非常简单。

于 2012-08-07T10:59:36.103 回答
0

为什么不将此方法放在基类中并在测试中扩展该类?它每次都会自动运行(至少使用 TestNG,但我想 JUnit 也支持继承)。

于 2012-08-04T16:24:47.120 回答