【发布时间】:2010-04-14 08:16:27
【问题描述】:
我发现 JUnit 的正确使用(或至少是文档)非常令人困惑。 这个问题既可以作为未来的参考,也可以作为一个真实的问题。
如果我理解正确的话,创建和运行 JUnit 测试有两种主要方法:
方法 A(JUnit 3 风格):创建一个扩展 TestCase 的类,并以单词 test 开始测试方法。当将该类作为 JUnit 测试运行时(在 Eclipse 中),所有以单词 test 开头的方法都会自动运行。
import junit.framework.TestCase;
public class DummyTestA extends TestCase {
public void testSum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
方法 B(JUnit 4 风格): 创建一个“普通”类并在方法前添加 @Test 注释。请注意,您不必以单词 test 开头该方法。
import org.junit.*;
import static org.junit.Assert.*;
public class DummyTestB {
@Test
public void Sum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
将两者混合似乎不是一个好主意,请参见例如this stackoverflow question:
现在,我的问题:
- 首选方法是什么,或者您什么时候会使用其中一种方法而不是另一种方法?
- 方法 B 允许通过扩展 @Test 注释来测试异常,就像在
@Test(expected = ArithmeticException.class)中一样。 但是在使用方法 A 时如何测试异常? -
使用方法 A 时,您可以将多个测试类分组到一个测试套件中,如下所示:
TestSuite suite = new TestSuite("All tests");suite.addTestSuite(DummyTestA.class);suite.addTestSuite(DummyTestAbis.class);
但这不能与方法 B 一起使用(因为每个测试类都应该是 TestCase 的子类)。 为方法 B 分组测试的正确方法是什么?
编辑:我已将 JUnit 版本添加到这两种方法中
【问题讨论】:
-
我见过
extends TestCase,然后每个测试也用@Test注释只是为了混淆。 :)
标签: java junit automated-tests