Automated tests 如何确保@Test方法始终在任何其他方法之前运行,而不考虑类、套件或组?
我对TestNG文档的阅读表明,如果我有一个这样标记的测试方法:Automated tests 如何确保@Test方法始终在任何其他方法之前运行,而不考虑类、套件或组?,automated-tests,testng,Automated Tests,Testng,我对TestNG文档的阅读表明,如果我有一个这样标记的测试方法: @BeforeSuite(alwaysRun = true) @Test public void MyTestMethod { ... } 然后,MyTestMethod将在任何地方定义的任何其他测试之前运行,而不考虑类、套件或组。但事实似乎并非如此 有没有一种方法可以使测试方法无条件地运行在所有其他方法之前?(如果失败,将不会运行其他测试。) 编辑: 测试类: class Suite_Setup extends B
@BeforeSuite(alwaysRun = true)
@Test
public void MyTestMethod { ... }
然后,MyTestMethod
将在任何地方定义的任何其他测试之前运行,而不考虑类、套件或组。但事实似乎并非如此
有没有一种方法可以使测试方法无条件地运行在所有其他方法之前?(如果失败,将不会运行其他测试。)
编辑:
测试类:
class Suite_Setup
extends BaseTestSuite
{
@BeforeSuite(alwaysRun = true)
def setup() {
System.out.println("Conducting test suite setup...")
// Verify that the internal API is configured properly and that the API host is available...
new Action(ApiHostname, new BasicCookieStore)
}
}
编辑:
答案是:
我们(自动)生成自己的TestNG.xml文件,其中没有包含@BeforeSuite方法。一旦它被包括进来,@BeforeSuite
就达到了预期的效果
但是,似乎@BeforeSuite
(以及可能的其他@Before…
和@Before…
注释)都可以与@Test
混合使用,而不是抑制带注释方法的执行,它们会导致该方法多次运行
此外,我没有指出我正在使用哪个版本的TestNG,这是我的疏忽。它是6.2。删除
@Test
,方法不能既是配置又是测试方法。我认为答案是
@Test
public void testInsert()
{..}
@Test(dependsOnMethods={"testInsert"})
public void testUpdate()
{..}
@Test(dependsOnMethods={"testInsert"})`
public void testReadAll()`
{..}
@Test(dependsOnMethods={"testInsert", "testUpdate", "testReadAll"})`
public void testRemove()`
{..}
尝试在类级别或方法级别使用组 在我的例子中,我有一组冒烟测试,需要在一切发生之前运行,如果其中任何一个失败,就不应该运行其他测试
@Test(groups="smoke")
public class SmokeTests {
public void test1 {
//
}
...
}
所有其他有测试的课程包括:
@Test(dependsOnGroups = "smoke")
public class OtherTests {
public void test1 {
//
}
...
}
@测试(始终运行=真)
使测试始终运行,而不考虑它所依赖的方法或组,甚至测试失败
有没有一种方法可以标记一个测试方法,这样它就可以无条件地运行在所有其他测试方法之前
只需尝试将最低优先级值分配给目标测试
@Test(priority = -2147483648)
public void myTest() {
...
}
您可以阅读更多关于TestNG测试优先级的信息
如果失败,将不会运行其他测试
根据此测试方法,您需要使用以下选项之一进行其他测试:
- 将一些组分配给第一个方法,并通过标记其他测试
- 通过标记其他测试
如果要使用其中一个依赖项选项,则不需要为第一个方法提供优先级。这似乎无法解决问题。我也尝试了@BeforeTest,但没有成功。好吧。。。这说明了什么?这不起作用。我有一个配置套件文件,其中包含多个测试节点,TestNG在另一个测试组中看不到从属组。您能否澄清一下,您是如何在TestNG.xml中包含BeforeSuite注释方法的?我需要并行运行多个类,并且需要使用BeforeSteuie注释运行setup方法