对于Junit测试,@ Before注释究竟如何工作?我希望能够传入一个参数来标记我在我的班级中运行的测试用例,因为每个测试用例都有一个我传入的不同的URL。
答案 0 :(得分:3)
对于每种测试方法:
@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测试运行器,它允许您在测试类本身上指定用于构造函数参数的List<Object[]>
。 / p>
(您也可以考虑创建一个自定义的JUnit4 Runner,但是每个测试方法都需要某种方式来指定它所采用的URL,这样可能不会比上面的解决方案更安全或更优雅。)