0
如果我有多個必須在鏈中的@Test方法,並且我想使用DataProvider爲整個測試場景傳遞更多數據,那麼這樣做的正確方法是什麼。在測試場景中使用DataProvider
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestClass {
private int type = -1;
@DataProvider
public Object[][] mock() {
return new Object[][] { { 1, "Hello" }, { 2, "World" } };
}
@Test(groups = { "A" }, priority = 0, dataProvider = "mock")
public void testOne(int i, String name) {
System.out.println("TestClass.testOne()");
switch (i) {
case 1:
type = 1;
Assert.assertEquals(name, "Hello");
break;
case 2:
type = 2;
Assert.assertEquals(name, "World");
break;
default:
break;
}
}
@Test(groups = { "A" }, priority = 1)
public void testTwo() {
Assert.assertEquals(type != -1, true);
System.out.println("TestClass.testTwo()");
}
}
每次當testOne被調用,它後嘲笑數據testTwo也必須調用時間: Resutlt - > TestClass.testOne() TestClass.testOne() TestClass.testTwo()
預期的結果 - > TestClass.testOne() TestClass.testTwo() TestClass.testOne() TestClass.testTwo()
這是我的套房xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" group-by-instances="true">
<test name="Test" verbose="3" group-by-instances="true" >
<classes>
<class name="demo.test.src.TestClass">
</class>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
確定,但輸出是 TestClass.testOne() TestClass.testOne() TestClass.testTwo() TestClass.testTwo() 這不是期望編輯一個。 –
@JordanBorisov在您的套件xml文件中添加一個「group-by-instances」= true,之後您將看到每個實例一起運行的方法。 –
OK現在我有這個輸出(這是相同的): =====調用的方法 TestClass.testOne()[pri:0,instance:[email protected]] 687780858 TestClass.testOne ()[pri:0,instance:[email protected]] 1757293506 TestClass.testTwo()[pri:1,instance:[email protected]] 687780858 TestClass.testTwo() [pri:1,instance:[email protected]] 1757293506 ===== –