如何在多个测试用例中使用@Before注释?

时间:2015-07-22 22:46:14

标签: selenium junit

对于Junit测试,@ Before注释究竟如何工作?我希望能够传入一个参数来标记我在我的班级中运行的测试用例,因为每个测试用例都有一个我传入的不同的URL。

1 个答案:

答案 0 :(得分:3)

对于每种测试方法:

  1. 运行每个@Before方法
  2. 然后运行测试方法
  3. 然后运行每个@After方法。
  4. 在你的情况下,我只是赞成提取私有方法:

    @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,这样可能不会比上面的解决方案更安全或更优雅。)