2012-02-21 124 views
1

这是一般的JUnit问题,但它涉及Selenium WebDriver的浏览器自动化。如何获得JUnit(WebDriver)测试重新运行多次?

我有一个运行一个JUnit测试类的JUnit4 TestSuite。我的JUnit测试类有10个测试方法,可以填写一个网页。在这个JUnit测试类中,我有一个包含测试数据的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测试类?如果是这样,怎么样?

我不确定如何做到这一点,而不是非常熟悉JUnit的工作方式。换句话说,不知道“测试”方法如何被解雇的基础,我目前不知道让JUnit测试多次运行的正确方法。另一种方法要问:如何让TestSuite类多次调用单元测试类,每次都有一个驱动测试的不同testentity参数(来自List)?

回答

2

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

+0

谢谢。是的,它看起来像构造函数,也是获取参数列表的方法都被反射调用,而不是不应该直接调用。起初令人困惑。 – djangofan 2012-02-21 20:43:49