如何让JUnit(WebDriver)测试重新运行多次?

时间:2012-02-21 17:46:18

标签: junit webdriver junit4

这是一般的JUnit问题,但它涉及使用Selenium WebDriver进行浏览器自动化。

我有一个运行一个JUnit测试类的JUnit4 TestSuite。我的JUnit测试类中有10个测试方法,用于填写网页。在这个JUnit测试类中,我有一个List对象,用于保存测试数据。我现在可以通过访问List对象来驱动单元测试,如下所示:

// all data for my tests can be grabbed using the get(0) method
testListObject.getPersonEntity.get(0).getName();

我对StackOverflow用户的疑问是:

如何重构我的JUnit测试,使其在对象列表中运行多个测试?

换句话说:

  1. 是否有可能创建一个循环遍历列表的方法,并以某种方式获取每次在循环中触发的所有测试方法?这有意义吗?然后,每次填写页面时单元测试都不会完成,而是仅在填写列表中每个测试用例的页面之后。

  2. 或者,我应该将测试列表移到TestSuite对象并以某种方式多次调用Unit测试类吗?如果是这样,怎么样?

  3. 我不确定如何实现这一目标,不熟悉JUnit的工作原理。换句话说,不知道“测试”方法如何被解雇的基础,我目前不知道让JUnit测试多次运行的正确方法。另一种问题:如何让TestSuite类多次调用单元测试类,每次都使用不同的testentity参数(来自List)来驱动测试?

1 个答案:

答案 0 :(得分:2)

请参阅JUnit中的ParameterizedParameters。我认为他们提供了你所需要的。有关更多帮助,请参阅this past SO link.您只需使用@RunWith(Parameterized.class),提供一个注释为Parameterized.Parameters的方法,该方法返回每次运行所需的数据(在List,数组或某些集合中) ),最奇怪的是为测试类提供一个构造函数,它接受可迭代数据的输入类型。