如何对多个测试用例使用@Before 注解?
How do you use the @Before annotation for multiple test cases?
对于 Junit 测试,@Before 注释究竟是如何工作的?我希望能够传入一个参数来标记我在 class 中我是 运行 的测试用例,因为每个测试用例都有不同的 URL 我传入。
对于每个测试方法:
- 每个
@Before
方法是运行
- 那么测试方法就是运行
- 然后每个
@After
方法是运行.
在你的情况下,我更倾向于提取到私有方法:
@RunWith(JUnit4.class)
public class YourClass {
private void prepareTest(String url) { /* ... */ }
@Test public void firstTest() {
prepareTest("http://foo.bar/");
/* ... */
}
@Test public void secondTest() {
prepareTest("http://baz.quux/");
/* ... */
}
}
如果测试用例的数量确实需要单独的参数化处理,您可以考虑使用 Parameterized 测试 运行ner,它允许您指定一个 List<Object[]>
用于构造函数参数关于测试 class 本身。
(您也可以考虑创建一个自定义的 JUnit4 Runner,但是每个测试方法都需要某种方式来指定它所需要的 URL,因此这可能不会比上面的解决方案。)
对于 Junit 测试,@Before 注释究竟是如何工作的?我希望能够传入一个参数来标记我在 class 中我是 运行 的测试用例,因为每个测试用例都有不同的 URL 我传入。
对于每个测试方法:
- 每个
@Before
方法是运行 - 那么测试方法就是运行
- 然后每个
@After
方法是运行.
在你的情况下,我更倾向于提取到私有方法:
@RunWith(JUnit4.class)
public class YourClass {
private void prepareTest(String url) { /* ... */ }
@Test public void firstTest() {
prepareTest("http://foo.bar/");
/* ... */
}
@Test public void secondTest() {
prepareTest("http://baz.quux/");
/* ... */
}
}
如果测试用例的数量确实需要单独的参数化处理,您可以考虑使用 Parameterized 测试 运行ner,它允许您指定一个 List<Object[]>
用于构造函数参数关于测试 class 本身。
(您也可以考虑创建一个自定义的 JUnit4 Runner,但是每个测试方法都需要某种方式来指定它所需要的 URL,因此这可能不会比上面的解决方案。)