单元测试
单元测试是一件繁琐但又不能不做的事。单元测试就是参与项目开发的工程师在项目中为了测试某一个代码单元而写的测试代码,用于执行项目中的目标函数并验证其逻辑状态或者结果。重要性就不多说了
使用JUnit4写单元测试
首先,在build中加入依赖包
testCompile "junit:junit:4.12"
第二,加入我们有一个工具类:
public class Calculator {
public int add(int one, int another) {
return one + another;
}
}
第三、我们想测试这个Calculator类的add(int one, int another)方法,在Android studio project中,源代码默认放在src/main/java下面的,而对应的单元测试代码则是放在src/test/java目录中,定义一个CalculatorTest类
public class CalculatorTest {
private Calculator calculator;
/**
* @Before:初始化方法 对于每一个测试方法都要执行一次
* @throws Exception
*/
@Before
public void setUp() throws Exception {
calculator = new Calculator();
}
/**
* @Before:初始化方法 对于每一个测试方法都要执行一次
* @throws Exception
*/
@After
public void tearDown() throws Exception {
}
@Test
public void add() throws Exception {
int sum =calculator.add(1,2);
assertEquals(sum,3);
}
}
我们也可以通过Android Studio的快捷方式来创建单元测试类,选中目标类或者目标方法点击右键,选择GoTo--->Test来快速创建单元测试方法,方式如图:
第四、对我们运行的测试方法:
在上面的例子中,你是否注意到一个@Test注解,通过声明这个注解,告诉JUnit我们要测的方法。JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:
- @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)
- @After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次)
- @Test:测试方法,在这里可以测试期望异常和超时时间
- @Test(expected=ArithmeticException.class) 检查被测方法是否抛出ArithmeticException异常
- @Ignore:忽略的测试方法
- @BeforeClass:针对所有测试,只执行一次,且必须为static void
- @AfterClass:针对所有测试,只执行一次,且必须为static void
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
每一个测试方法的调用顺序为:
@Before -> @Test -> @After;