Android AWS设备场似乎忽略了TestNG注释

Android AWS设备场似乎忽略了TestNG注释,android,amazon-web-services,testng,aws-device-farm,Android,Amazon Web Services,Testng,Aws Device Farm,我已成功上载并在AWS设备场上运行测试。在本地,我使用@Test(enabled=false,dependsOnGroups=“Login”)等有趣的东西来标记此时要运行哪些测试,以及它们应该执行的顺序。在当地,这一切都像预期的那样运作良好。问题发生在我将maven构建的zip上传到设备场并执行测试运行之后 查看设备场的日志,不管“enabled”设置为true还是false,它都会运行。它还忽略“group=”和“dependsOnGroups”注释。这非常重要,因为如果我没有首先登录,所有其

我已成功上载并在AWS设备场上运行测试。在本地,我使用@Test(enabled=false,dependsOnGroups=“Login”)等有趣的东西来标记此时要运行哪些测试,以及它们应该执行的顺序。在当地,这一切都像预期的那样运作良好。问题发生在我将maven构建的zip上传到设备场并执行测试运行之后

查看设备场的日志,不管“enabled”设置为true还是false,它都会运行。它还忽略“group=”和“dependsOnGroups”注释。这非常重要,因为如果我没有首先登录,所有其他测试都会失败。更糟糕的是,后续的失败测试不会被跳过,所以AWS很高兴从中收取更多的费用

我尝试使用@Test(priority=blah),但它也忽略了这一点。它似乎唯一尊重的是像“BeforeSuite”和“AfterSuite”这样的东西


有人遇到过这种情况或者知道为什么会发生这种情况吗?

我是AWS设备场的工程师

1)“已启用”注释标志

我刚刚验证了关于我们的TestNG解析器忽略注释上的“enabled”标志并始终包含测试的说法是正确的,即使它已被禁用。乍一看,这似乎是一个简单的问题,有一个直截了当的解决方案。假设是最好的情况,我们将尝试修复它,并尽快投入生产

2)“dependsOnGroups”注释字段

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

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

3)执行测试的“组”

我们目前不向用户公开
组/excludegroups
,以允许用户选择要执行或跳过的特定测试集合。但是,这应该可以通过在
testng.xml
文件中配置
条目来实现,该文件位于上传到测试包存档中的
*-tests.jar
文件的根目录中。在这种情况下,我们的解析器应该只“发现”这些组中定义的测试,而不是所有
@Test
注释的方法。然而,我还没有试过这个具体案例,所以你的YMMV



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

我在*-tests.jar的根目录中添加了testng.xml并选中


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

感谢您的响应。我认为,如果在相关的AmazonTestNG页面上注意到缺少注释支持,这将对未来的开发人员有所帮助。这样做可以让一些人不必费尽周折就明白这一点。谢谢你们,我花了很长时间试图找出你们在#2中描述的缺乏依赖性支持所导致的错误。我同意将此添加到设备场文档中是一件好事。我们的团队在尝试指定执行顺序时遇到了完全相同的问题。我们尝试在testng.xml文件中指定它,并将其指定为Test注释@Test(priority=n)的priority属性。两者都失败了。现在,我们正在努力回答@ahawker的问题是,设备场是会完全忽略Testng.xml文件,还是只忽略它的某些方面。到目前为止,它似乎完全忽略了这一点。你能对此发表评论吗?两年后这个问题。。。这个问题有更新吗?这个提名会得到支持吗?这是一个评论,不是答案。