1

让我们进行以下 TestNG 测试:

@Test 
public void Test1() {

}

@Test (dependsOnMethods={"Test1"}) 
public void Test2() {

}

@Test (dependsOnMethods={"Test2"}) 
public void Test3() {

}

测试用作功能性端到端 webui 测试(使用 Selenium Webdriver)。每个测试方法都是长 e2e 场景中的一个步骤。

我们如何重构测试以使其更具可读性?最好的解决方案可能是删除注释中的所有这些“dependsOnMethods”参数,并隐式提供这个“dependsOnMethods”功能。问题是如何?按优先顺序排列的期望:

  • 找到让 TestNG 参与其中的解决方案
  • 保留TestNG,但涉及任何其他工具,例如easyb?使用 groovy 而不是 java...我可以将 TestNG 组与 easyb 一起使用吗?是否有可能,不是 bdd 风格而是“junit”风格的easyb,比如:

给定“用户已登录并设置专家模式”,{

//... setup, a la @BeforeClass 

}

然后“用户可以启用bla bla bla”{

//... 

}

然后“用户可以检查便便便便”{

//... 

}

然后“用户保存更改”{

//... 

}

然后“用户还原更改”,{

// Tear Down, a la @AfterClass 

}

'刚刚开始在同一个java项目中用groovy编写其他测试类'有什么问题吗?

  • 踢TestNG,但用什么?TestNG 组功能 - 是必需的。

一个疯狂的解决方案可能是 - 打破一切并搬到修昔底德。但就我而言,这不是一个选择。

PS我知道依赖测试是一种“不好的做法”。但我相信“测试依赖项本身”也是自动化的一个好点......

4

2 回答 2

1

是的..有一个替代使用取决于...不要这样做!

正如我在这里回答的那样......

这是一个糟糕的测试逻辑。作为一名经验丰富的专业软件测试工程师。我建议你立即摆脱你正在走的这条自动化道路。

好的测试架构要求每个方法都是自给自足的,并且在继续之前不应该依赖其他测试来完成。为什么?因为说测试 2 依赖于测试 1。说测试 1 失败..现在测试 2 将失败..最终,您将测试 1、2、3、4、5 测试失败,您甚至不知道是什么原因是。

先生,我对您的建议是创建自给自足、可维护且简短的测试。

这是一本很棒的读物,可以帮助您的努力:http ://www.lw-tech.com/q1/ug_concepts.htm

于 2013-10-10T14:04:48.903 回答
1

保留TestNG,但涉及任何其他工具,例如easyb?使用 groovy 而不是 java...我可以将 TestNG 组与 easyb 一起使用吗?是否有可能,不是 bdd 风格而是“junit”风格的easyb

这是我使用的选择。

你不会有像easyb这样的测试组(至少开箱即用),到目前为止我还没有找到任何方法来“注释”easyb/groovy“测试方法”。

但是,现在我有:

  • 隐式依赖方法。尽管它们并不完全依赖 - 如果某些方法将被“禁用”,则仍将执行下一个方法。但是我的实际目标是可以实现的:由于测试文件是一个 groovy 脚本,所有的“测试方法”都将按照它们编写的顺序执行。一旦您需要禁用任何“测试方法”,您可以简单地注释其代码 - 这将禁用测试执行并在报告中将其显示为“待定”。
  • 测试方法具有可读的“刺痛”名称。

这是测试的样子:

beforeAllSetup()

before "each method setup", {
  //implementation
}
after "each method tear down", {
  //...
}

it "first test this", {
  //...
}

it "this will be shown as pending in the report", /*{
  //...
}*/

it "then test this", {
  //...
}

afterAllTearDown()
于 2013-10-18T11:01:06.587 回答