TestNg html
TestNg 是java的一個自動化單元測試框架 java
參考:http://testng.org/doc/index.html框架
環境準備 編輯器
既然是java 的自動化單元測試框架,就必需要有java的環境了,這裏使用的編輯器是Eclipse,已經安裝過TestNg 插件,若是環境準備好就能夠開始了ide
代碼實例 函數
代碼結構如圖 單元測試
新建一個java項目,以後添加一個TestNg類,以後會生成一個測試類,和一個xml文件 測試
(若是發現TestNg編輯是出錯,沒法調用TestNg的標籤函數,那麼導入TestNg.jar.能夠右鍵點擊項目,以後BuildPath ->add Libary->選擇TestNg 便可) ui
簡單地TestNg類插件
package TestNgDemo;
//使用TestNg 測試框架
import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
public class NewTest {
//測試開始前執行一次
@BeforeClass
public void beforeClass() {
System.out.println("開始前執行一次");
}
@Test
public void case1() {
System.out.println("case1");
}
@Test
public void case2() {
int a = 2;
int b = 3;
int sum = a+b;
Assert.assertEquals(sum, 5, "Result Error");
System.out.println("case2");
}
//測試結束時執行一次
@AfterClass
public void afterClass() {
System.out.println("結束時執行一次");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
對應的Xml配置文件(TestNg 都是經過註釋標籤,有點相似Junit,而且經過xml文件託管):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
<test name="Test">
<classes>
<class name="TestNgDemo.NewTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
1
2
3
4
5
6
7
8
9
10
使用TestNg Xml 進行數據驅動傳遞參數
package TestNgDemo;
//使用TestNg 傳遞參數
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
public class NewTest2 {
@BeforeMethod
public void beforeMethod() {
System.out.println("每一個方法運行時運行");
}
//經過Parameters 獲取Xml 中指定的參數
@Parameters({"name","age"})
@Test
public void case1(String name,int age) {
System.out.println("case1 Name is"+ name);
System.out.println("case1 Age is"+ age);
}
@Test
public void case2() {
System.out.println("case2");
}
@AfterMethod
public void afterMethod() {
System.out.println("每一個方法結束時運行");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
對應的xml以下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
<parameter name="name" value="TestName" />
<parameter name="age" value="55" />
<test name="Test">
<classes>
<class name="TestNgDemo.NewTest2"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
1
2
3
4
5
6
7
8
9
10
11
12
13
經過xml設置分組,運行不一樣的case
package TestNgDemo;
//TestNg 分組運行
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
public class NewTest3 {
@BeforeMethod
public void beforeMethod() {
System.out.println("Begain");
}
@Parameters({"name","age"})
@Test(groups="CaseGroup1")
public void case1(String name,int age) {
System.out.println("case1 Name is"+ name);
System.out.println("case1 Age is"+ age);
}
@Test(groups="CaseGroup2")
public void case2() {
System.out.println("case2");
}
@AfterMethod
public void afterMethod() {
System.out.println("End");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
對應的xml文件以下,須要運行那個組的時候,就能夠直接更改:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
<parameter name="name" value="TestName" />
<parameter name="age" value="55" />
<test name="Test">
<grroup>
<define name = CaseGroup1/>
<define name = CaseGRoup2/>
<run>
<include name = CaseGroup1/>
</run>
</grroup>
<classes>
<class name="TestNgDemo.NewTest3"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
TestNg 是經過Xml文件管理測試累的,能夠看到,每一個測試方法均可以看作一條Case,而且開頭都有@Test 做爲測試標記
更多的TestNg xml管理的例子能夠參考: