我已经成功上传并在设备群上运行了我AWS测试。在本地,我使用了一些有趣的东西,比如@Test(启用=false,依赖组="登录")来标记当时要运行的测试,以及它们应该执行的顺序。在本地,这一切都如预期的那样运行良好。问题发生在我将maven构建的zip上传到设备群并执行测试运行之后。
查看设备群的日志,它不关心“启用”是否设置为true或false,它会运行任何东西。它还忽略了“group=”和“依赖组”注释。这非常重要,因为如果我没有先登录,所有其他测试都会失败。更糟糕的是,后续的失败测试不会被跳过,所以AWS很高兴从这件事中向我收取更多的钱。
我尝试使用@Test(优先级=blah),但它也忽略了这一点。它似乎唯一尊重的是@BeforeSuite和@AfterSuite之类的东西。
有人遇到过或者知道为什么会这样吗?
我是AWS设备农场的工程师。
1)“启用”注释标志
我刚刚验证了您对我们的TestNG解析器忽略注释上的“启用”标志并始终包含测试的看法是正确的,即使它被禁用。乍一看,这似乎是一个简单的问题,需要直接修复。假设最好的情况下,我们将尝试修复它并尽快投入生产。
2)“依赖组”注释字段
这个问题的答案有点复杂。截至今天,AWS设备场不支持依赖组或依赖方法注释字段。
这有几个原因,主要原因是AWS设备场单独执行每个@Test
方法,每个方法都使用Appium服务器的新实例。这种方法有优点/缺点,我不会在这里深入研究,但我会说它确实在技术和特性层面都有好处。当使用TestNG
运行器执行单个方法时,它只会加载单个方法的上下文,而不是在.jar
文件中找到的指定依赖项的所有测试/套件/组。此外,由于这些测试方法中的每一个每次都在不同的Java
进程中执行,因此TestNG
运行器不会在内存中维护任何“状态”。这意味着它不知道它之前已经执行了测试(在不同的进程中),因此它将尝试再次运行它。
3)执行“组”测试
我们目前不向用户公开组/排除组
以允许他们选择要执行或跳过的特定测试集合。但是,这应该可以通过配置您的来实现
希望有帮助!如果您有任何其他问题或有特定的运行/测试包希望我们查看,请随时联系或粘贴URL到以前执行的运行中。
我在*-test. jar的根目录中添加了testng.xml并进行了检查。
但是设备场没有运行testng. xml中列出的测试。它仍在运行所有带有@Test注释的类