提问者:小点点

AWS设备群似乎忽略了TestNG注释


我已经成功上传并在设备群上运行了我AWS测试。在本地,我使用了一些有趣的东西,比如@Test(启用=false,依赖组="登录")来标记当时要运行的测试,以及它们应该执行的顺序。在本地,这一切都如预期的那样运行良好。问题发生在我将maven构建的zip上传到设备群并执行测试运行之后。

查看设备群的日志,它不关心“启用”是否设置为true或false,它会运行任何东西。它还忽略了“group=”和“依赖组”注释。这非常重要,因为如果我没有先登录,所有其他测试都会失败。更糟糕的是,后续的失败测试不会被跳过,所以AWS很高兴从这件事中向我收取更多的钱。

我尝试使用@Test(优先级=blah),但它也忽略了这一点。它似乎唯一尊重的是@BeforeSuite和@AfterSuite之类的东西。

有人遇到过或者知道为什么会这样吗?


共2个答案

匿名用户

我是AWS设备农场的工程师。

1)“启用”注释标志

我刚刚验证了您对我们的TestNG解析器忽略注释上的“启用”标志并始终包含测试的看法是正确的,即使它被禁用。乍一看,这似乎是一个简单的问题,需要直接修复。假设最好的情况下,我们将尝试修复它并尽快投入生产。

2)“依赖组”注释字段

这个问题的答案有点复杂。截至今天,AWS设备场不支持依赖组或依赖方法注释字段。

这有几个原因,主要原因是AWS设备场单独执行每个@Test方法,每个方法都使用Appium服务器的新实例。这种方法有优点/缺点,我不会在这里深入研究,但我会说它确实在技术和特性层面都有好处。当使用TestNG运行器执行单个方法时,它只会加载单个方法的上下文,而不是在.jar文件中找到的指定依赖项的所有测试/套件/组。此外,由于这些测试方法中的每一个每次都在不同的Java进程中执行,因此TestNG运行器不会在内存中维护任何“状态”。这意味着它不知道它之前已经执行了测试(在不同的进程中),因此它将尝试再次运行它。

3)执行“组”测试

我们目前不向用户公开组/排除组以允许他们选择要执行或跳过的特定测试集合。但是,这应该可以通过配置您的来实现

希望有帮助!如果您有任何其他问题或有特定的运行/测试包希望我们查看,请随时联系或粘贴URL到以前执行的运行中。

匿名用户

我在*-test. jar的根目录中添加了testng.xml并进行了检查。

但是设备场没有运行testng. xml中列出的测试。它仍在运行所有带有@Test注释的类