首页 / 软件开发 / 数据结构与算法 / TestNG官方文档中文版(7)-方法依赖和工厂
TestNG官方文档中文版(7)-方法依赖和工厂2011-04-01 BlogJava sky ao5.6 - Dependent methods有些时候,你需要你的测试方法按照一个特定的顺序被调用。这非常有用,比如:* 在运行更多测试方法前确认特定数量的测试方法调用完成并且成功* 初始化测试并希望这个初始化方法也作为测试方法(被标记为@Before/After的方法 将不作为最终报告的一部分)为了做到这点,需要使用@Test注解的dependsOnMethods属性或者dependsOnGroups属 性。有两种依赖:* 强依赖。在运行你的测试方法前所有依赖方法必须运行并且成功。哪怕有一个依赖 方法失败,测试方法都不会被调用,在报告中将被标记为SKIP。* 软依赖。测试方法在依赖方法运行后总是会被运行,即使某些依赖方法失败。对于 只想确认测试方法是按照特定顺序运行,而测试方法并不真正依赖其他方法是否成功的情 况,非常有用。软依赖通过在@Test注解中增加"alwaysRun=true"来实现。这里有一个强依赖的例子:@Test
public void serverStartedOk() {}
@Test(dependsOnMethods = { "serverStartedOk" })
public void method1() {}
在这个例子中,method1()被申明依赖于方法serverStartedOk(),这保证 serverStartedOk() 方法将总是首先被调用。也可以让方法依赖于完整的测试组:@Test(groups = { "init" })
public void serverStartedOk() {}
@Test(groups = { "init" })
public void initEnvironment() {}
@Test(dependsOnGroups = { "init.* })
public void method1() {}
在这里例子中,method1()被申明依赖于任何匹配正则表达式"init.*"的组,这保证了 方法serverStartedOk()和initEnvironment()总是在method1()前被调用。注意:前面说明说,在测试运行期间,属于同一个组的方法的调用顺序并不保证相同 。如果一个方法的依赖失败了,而且是强依赖(默认alwaysRun=false),这个方法将不被 标记为FAIL而是SKIP。被跳过的方法在最终的报告中报告(在HTML中用红和绿之外的其他 颜色),这很重要,因为被跳过的方法并不一定是失败。dependsOnGroups和dependsOnMethods都接受正则表达式作为参数。对于 dependsOnMethods, 如果你依赖的方法巧合有多个重载的版本,所有装载的方法都将被调 用。如果你只想调用重载的方法中的一个,请使用dependsOnGroups。有关方法依赖的更高级的例子,请参考本文档,将使用继承来提供一个优雅的解决方 案来处理多重依赖的问题。