Android Stuido 2.2.1中,新建项目,默认会建好main包,android test包,和test包。main包里面写正常的业务代码,android test里面写instrumentation test,test包里写单元测试。
Annotation 执行顺序
通过示例观察
在Android studio自动生成的ExampleUnitTest.class里面换成如下代码:
public class ExampleUnitTest {
@BeforeClass
public static void classReady() {
System.out.println("ExampleUnitTest.classReady");
}
@AfterClass
public static void afterClass() {
System.out.println("ExampleUnitTest.afterClass");
}
@Before
public void before() {
System.out.println("ExampleUnitTest.before");
}
@After
public void after() {
System.out.println("ExampleUnitTest.after");
}
@Test
public void testFoo() {
System.out.println("ExampleUnitTest.testFoo");
}
@Test
public void testAdd() {
System.out.println("ExampleUnitTest.testAdd");
}
@Test
public void testDiff() {
System.out.println("ExampleUnitTest.testDiff");
}
}
执行结果如下
ExampleUnitTest.classReady
ExampleUnitTest.before
ExampleUnitTest.testAdd
ExampleUnitTest.after
ExampleUnitTest.before
ExampleUnitTest.testFoo
ExampleUnitTest.after
ExampleUnitTest.before
ExampleUnitTest.testDiff
ExampleUnitTest.after
ExampleUnitTest.afterClass
执行顺序说明
Junit4为每一个@Test方法实例化一个testcase,在这个testcase的对象中,独立的测试这一个方法。
- @BeforeClass最早执行,且只执行一次,用于加载expensive resource.
- @AfterClass最后执行,且只执行一次,用于释放expensive resouce.
- @Before 每个测试方法执行之前执行一次。
- @After 每个测试方法执行之后执行一次。
每个测试方法都在单独的testcase对象中,没有按照testcase里面代码书写顺序执行,而是按照被测试方法名字的字母顺序执行的。