首页 > 解决方案 > selenium 中的测试未按所需顺序运行

问题描述

虽然我正在使用@FixMethodOrder(MethodSorters.NAME_ASCENDING)
我的测试并没有按预期的顺序运行

我有 2 个测试,
第一个测试名称是:aTest_Login()
第二个测试名称是:bTest_CreateContact()

有时第二个测试在第一个测试之前运行。

标签: seleniumjunit4

解决方案


在不了解有关 的详细信息的情况@FixMethodOrder下,它似乎是 JUnit 的事情。顾名思义,JUnit 是一个执行单元测试的框架。单元测试之间不能有任何依赖或联系(这就是单元测试的思想),所以它们的执行顺序不能影响结果,它们是可交换的。如果您想以特定顺序执行测试以进行集成和 gui 测试,我强烈建议您使用支持测试依赖项的东西,例如Test NG

在 TestNG 中,您可以定义测试组并指定测试依赖项。如果你想运行 gui 测试,第一个“root”测试可能是你的测试系统是否在线(因为如果系统离线,你所有的 gui 测试都会失败,所以只有一个失败的测试是有意义的,说系统是离线)。

@Test(groups = "login") 
public void aTest_Login() {
   ...
}

@Test(groups = {"contacts", "creation"}, dependsOnGroups = "login") 
public void bTest_CreateContact(){
  // this test will only be executed if all tests of the group "login" passed
}

TestNG 有一个来自 JUnit 的迁移指南,并提供有关集成和 gui 测试的其他内容。你应该检查一下


推荐阅读