一、Junit测试
测试的条件和方法是:
- 在写测试方法的时候, 必须要public, 并且返回值必须是void, 并且方法中不能接受任何的参数
- 通常, 使用Assert类来对测试的结果进行断言, 从而来判定是否通过测试。
- 当要执行Test类中所有的Test方法时,可以右击类,把类中所有的@方法都执行。
- 测试类要单独建一个包,命名一般是:Test+测试的类
测试类中常用的语句有:
- @Test:
- @Test(timeout=10):是否是1秒内运行完的
- @Test(expected = java.lang.ArithmeticException.class):如果抛出了指定的异常,那是正常情况。
- @BeforeClass、@AfterClass:类加载前和类加载后运行的方法,两个的方法都必须是static的
- @Before、@After,用于所有的@Test方法执行前、执行后一定会执行的方法,通常:
- @Before用于统一资源的声明
- @After用于资源的关闭,相当于是try/catch的finaly
- AAssert.assertEquals(expected,actual):实际开发过程中, 在junit测试框架中,专门提供一个叫做Assert断言的类,断言正确才会正常(声明异常除外);
- @Test:
- 定义要测试的类及方法
public class Student {
public int add(int i, int j){
return i+j;
}
public int divide(int i, int j ){
return i/j;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 测试类用来测试
public class TestStudent {
@BeforeClass//用于类加载前的测试,一定要是静态的
public static void beforeClass() {
System.out.println("beforeClass ");
}
Student s;
// 加了 before 之后, 那么 junit 测试 框架 就会在执行 每个 具体的 @Test 这样的方法之前 执行这个
// beforeMethod方法
@Before
public void beforeMethod() {
System.out.println("beforeMethod");
// new Student
s = new Student();
}
@Test(timeout = 1)//timeout后面数字单位是毫秒,只有在相应时间内执行完才会通过,用于测试效率
public void testAdd() {
// 测试 student 类中的 add 方法
int result = s.add(1, 2);
System.out.println(" testAdd =====");
// 注意: 实际开发过程中, 我们 会 对 测试 的结果 进行 断言 ,
// 在junit 测试 框架中 , 专门 提供 一个叫做 Assert 断言 的类,
Assert.assertEquals(2, result);
}
@Test(expected = java.lang.ArithmeticException.class)//用于测试抛出异常的情况
public void testDivide() {
int result = s.divide(3, 0);
System.out.println("testDivide======");
}
// 在每个 @Test执行 完成 之后 执行
@After
public void afterMethod() {
// 释放资源
s = null;
System.out.println("afterMethod");
}
@AfterClass//类中方法全部测试完后进行的方法,也必须是static
public static void afterClass() {
System.out.println("afterClass");
}
}
- 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
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
注意:
AndroidTest是在debug模式下才能进行的测试,如果执行release版本操作无法进行测试(release版本可以不混淆,只是有签名而已)