目錄
- 注解簡介
- 執(zhí)行過程注解的使用
- 其他注解的使用
注解簡介
JUnit包中包含了一些注解的使用,其中有以下一些注解:
@Before
該方法在每次測試方法調(diào)用前都會調(diào)用@Test
說明了該方法需要測試@BeforeClass
該方法在所有測試方法之前調(diào)用渐苏,只會被調(diào)用一次@After
該方法在每次測試方法調(diào)用后都會調(diào)用@AfterClass
該方法在所有測試方法之后調(diào)用收叶,只會被調(diào)用一次@Ignore
忽略該方法@RunWith 和 @Suite
套件測試
執(zhí)行過程注解的使用
在注解簡介中我們提到的前五個注解都是執(zhí)行過程的注解骄呼,接下來我們來看看如何使用:
public class AnnotationsTest {
private static final String TAG = "AnnotationsTest";
@Before
public void before() {
System.out.println(TAG + "===before===");
}
@BeforeClass
public static void beforeClass() {
System.out.println(TAG + "===beforeClass===");
}
@Test
public void testOne() {
System.out.println(TAG + "===testOne===");
}
@Test
public void testTwo() {
System.out.println(TAG + "===testTwo===");
}
@After
public void after() {
System.out.println(TAG + "===after===");
}
@AfterClass
public static void afterClass() {
System.out.println(TAG + "===afterClass===");
}
}
我們可以查看一下運行的結(jié)果:
在這里我們可以看到我們使用了兩個@Test注解,因此會分別運行一次testOne()和testTwo()方法判没,而@Before和@After是在@Test標(biāo)注的方法前后分別運行一次蜓萄,因此會有兩次運行,最后@BeforeClass和@AfterClass是指在類運行前和后分別運行一次澄峰,因此出現(xiàn)在運行的最前面和最后面嫉沽。
其他注解的使用
使用忽略@Ignore
我們在上面運行的代碼中添加testThree()方法,并用@Ignore和@Test標(biāo)注然后運行:
@Ignore
@Test
public void testThree() {
System.out.println(TAG + "===testThree===");
}
查看運行結(jié)果為:
我們可以看到期中testThree()方法是不一樣的俏竞,表示沒有運行绸硕,查看運行的接口也可以看出沒有執(zhí)行testThree()方法。這個比較適合我們使用在多個方法測試時魂毁,需要忽略其中的某些已經(jīng)測過的方法使用玻佩。
注意:
1、在Android中書寫測試時席楚,不能使用Log咬崔,不然會報錯,這是因為JUnit相當(dāng)于在Java環(huán)境下進(jìn)行測試酣胀,是沒有Android的Log的刁赦。
2娶聘、使用@BeforeClass和@AfterClass修飾的必須是靜態(tài)方法
套件測試@RunWith 和 @Suite
1闻镶、被測試的類
public class SuitTestUtils {
private String str = "Suit Test Utils";
public SuitTestUtils(String str) {
this.str = str;
}
public String addString(String a) {
str = str + a;
System.out.println(str);
return str;
}
public String printString() {
System.out.println(str);
return str;
}
}
在這個類中有兩個方法需要測試,我們分別在一個測試類中測試期中的一個方法丸升。
2铆农、測試的類
import org.junit.Before;
import org.junit.Test;
public class SuitOneTest {
private String str = "Suit One Test";
private SuitTestUtils utils;
@Before
public void setUp() {
utils = new SuitTestUtils(str);
}
@Test
public void testPrintString() {
utils.printString();
}
}
SuitOneTest 類用來測試printString()方法
import org.junit.Before;
import org.junit.Test;
public class SuitTwoTest {
private String str = "Suit Two Test";
private SuitTestUtils utils;
@Before
public void setUp() {
utils = new SuitTestUtils(str);
}
@Test
public void testAddString() {
utils.addString(" Hello world");
}
}
SuitTwoTest 類用來測試addString()方法
確定這兩個類都是可以跑通的。
3狡耻、套件測試的類
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({SuitOneTest.class,
SuitTwoTest.class})
public class SuitTest {
}
我們將前兩個測試類添加進(jìn)來墩剖,一并測試,然后選中SuiteClasses右鍵-選擇Run SuitTest進(jìn)行運行夷狰,結(jié)果為:
從結(jié)果中可以看出來兩個測試類都跑了岭皂。這個功能比較適合多個測試類同時運行的情況,有的時候我們的測試類測試相應(yīng)的類的功能沼头,多個測試類一同測試爷绘,就可以不用每個單獨跑一遍书劝,減少時間。
最后
還有一些其他的高級用法土至,這里就不做過多的介紹了购对,文章的結(jié)尾會給出參考鏈接。我也是參考這些文章來學(xué)習(xí)的陶因,非常感謝提供資料的作者骡苞。
這里JUnit測試基本就告一段落了,文中介紹了一些簡單的用法楷扬,因為個人能力有限吧解幽,在這里希望大家能把測試應(yīng)用到項目中或者經(jīng)常使用,這樣才有意義烘苹。
其他用法: Junit - Android測試之旅(二)
參考:http://wiki.jikexueyuan.com/project/junit/
源碼地址