Java 是否有更干净的方法来构造TestNG测试用例?
我的问题更多地与结构/清洁有关。我在TestNG中有一个测试脚本,希望添加测试用例以进行扩展。我想知道是否有一种干净的方法来重复测试用例。例如: 我可以做到:Java 是否有更干净的方法来构造TestNG测试用例?,java,eclipse,selenium,testing,testng,Java,Eclipse,Selenium,Testing,Testng,我的问题更多地与结构/清洁有关。我在TestNG中有一个测试脚本,希望添加测试用例以进行扩展。我想知道是否有一种干净的方法来重复测试用例。例如: 我可以做到: @Test(priority=0, name = login ) //some code @Test(priority=2, name = submit ) //some code @Test(priority=3, name = accept ) 这只是一个测试场景。现在我想对不同的流做同样的事情,但是测试用例正在重复。。。例如:
@Test(priority=0, name = login )
//some code
@Test(priority=2, name = submit )
//some code
@Test(priority=3, name = accept )
这只是一个测试场景。现在我想对不同的流做同样的事情,但是测试用例正在重复。。。例如:
@Test(priority=0, name = login )
//some code
@Test(priority=2, name = submit )
//some code
@Test(priority=3, name = rejected )
在这两个流中,我重复登录和提交的两个测试是相同的。流程中唯一的变化是每次提交后发生的情况,例如提交、拒绝、取消等。我只知道一种方法,即每次重复编写登录名并提交
问题是,是否有更好/更干净、更结构化的方法来编写此文档,而不是我每次都重复登录的下面的文档?
@Test(priority=0, name = login )
//some code
@Test(priority=2, name = submit )
//some code
@Test(priority=3, name = accept )
//Some code
@Test(priority=4, name = login )
//some code
@Test(priority=5, name = submit )
//some code
@Test(priority=6, name = rejected )
//some code
.
.
.
@Test(priority=n ...
如果您的目标是删除重复的测试,那么创建更多的非个性化测试,并通过在测试中指定来多次运行它们如何 例如,您可以执行以下操作:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Test Suite 1">
<test name="Test Set 1">
<classes>
<class name="test.mytest.Test1" />
<class name="test.mytest.Test2" />
</classes>
</test>
<test name="Test Set 2">
<classes>
<class name="test.mytest.Test1" />
<class name="test.mytest.Test3" />
</classes>
</test>
</suite>
运行时(我在示例中使用了Maven),将生成:
Running TestSuite
==Before method==
test login
==Before method==
test submit
test accept
==Before method==
test login
==Before method==
test submit
test reject
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.253 sec - in TestSuite
对于本例,我按类组织它们,但您可以按组、方法等进行组织
编辑
根据您的评论,我添加了一个使用@BeforeMethod的示例以及生成的输出
如果您希望专门重用@before方法,我想您可以将其放入基类中,并让测试用例对其进行扩展:
public class TestBase {
@BeforeMethod
public void before(){
System.out.println("==Before method==");
}
}
public class Test1 extends TestBase{
@Test
public void testLogin(){
System.out.println("test login");
}
@Test
public void testSubmit(){
System.out.println("test submit");
}
}
我从来都不需要做这样的事情,所以我不能用最佳实践来谈论它,但它会起作用。这会起作用吗
public class BeforeStuff {
@BeforeMethod()
}
public class Test1 {
@Test
@Test
}
public class Test2 {
@Test
}
public class Test3 {
@Test
}
}
这看起来可以解决我需要它做的事情。虽然,接下来的问题是,before方法会在哪里?我不确定你用它做什么,所以很难说它应该适用于你的具体案例。我修改了我的答案,以显示使用@BeforeMethod的示例以及它将产生的输出。这正是我想要的。很高兴听到。如果是这样的话,你介意把问题标记为已回答吗?
public class BeforeStuff {
@BeforeMethod()
}
public class Test1 {
@Test
@Test
}
public class Test2 {
@Test
}
public class Test3 {
@Test
}
}