Android开发Android知识

Android单元测试-Junit

2017-03-11  本文已影响0人  oden

基本用法实际操作

CSDN同步发布
1、新建测试类

public class Caculation {
    public double sum(double numA, double numB) {
        return numA + numB;
    }

    public double multiply(double numA, double numB) {
        return numA * numB;
    }
}

2、类名右键--Go To--Test,生成测试类
项目中androidTest文件夹里的就是UI测试代码,而test文件夹是Junit部分的单元测试代码。



3、编辑测试类,右键类名或者方法可运行得出测试结果

public class CaculationTest {
    private Caculation mCaculation;

    @Before
    public void setUp() throws Exception {
        mCaculation = new Caculation();
    }

    @Test
    public void sum() throws Exception {
        assertEquals(2,mCaculation.sum(1,1),0);
    }

    @Test
    public void multiply() throws Exception {
        assertEquals(10,mCaculation.multiply(2,5),0);
    }

}

Junit断言及注解说明

断言

注意:上面的方法,都有一个重载的方法,可以在前面加一个String类型的参数,表示如果验证失败的话,将用这个字符串作为失败的结果报告。
比如:
assertEquals("Current user Id should be 1", 1, currentUser.id());

注解

一个测试类单元测试的执行顺序为:
@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
每一个测试方法的调用顺序为:
@Before –> @Test –> @After

打包测试

同样,如果一个项目中有很多个测试用例,如果一个个测试也很麻烦,因此打包测试就是一次性测试完成包中含有的所有测试用例。

@RunWith(Suite.class)  
@Suite.SuiteClasses({ AssertTests.class, CaculationTest.class, DemoTest.class })  
public class AllCaseTest {  
  
}  

需要向@RunWith注解传递一个参数Suite.class 。同时,我们还需要另外一个注解@Suite.SuiteClasses,来表明这个类是一个打包测试类。并将需要打包的类作为参数传递给该注解就可以了。至于AllCaseTest随便起一个类名,内容为空既可。运行AllCaseTest类即可完成打包测试

限时测试

在@Test后加入timeout参数

 @Test(timeout=1000)
    public void multiply() throws Exception {
        assertEquals(10,mCaculation.multiply(2,5),0);
    }

直接用@Rule设置该类的timeout参数

@Rule
    public Timeout globalTimeout = new Timeout(10000); // 10 seconds max per method tested  

验证方法会抛出某些异常

public class Calculator {

    // Omit testAdd() and testMultiply() for brevity

    public double divide(double divident, double dividor) {
        if (dividor == 0) throw new IllegalArgumentException("Dividor cannot be 0");

        return divident / dividor;
    }}
public class CalculatorTest {
    Calculator mCalculator;

    @Before
    public void setup() {
        mCalculator = new Calculator();
    }

    // Omit testAdd() and testMultiply() for brevity

    @Test(expected = IllegalArgumentException.class)
    public void test() {
        mCalculator.divide(4, 0);
    }

}

@Test(expected = IllegalArgumentException.class)表示验证这个测试方法将抛出IllegalArgumentException异常,如果没有抛出的话,则测试失败。

参考文章

Junit使用教程(三)
Android单元测试(三):JUnit单元测试框架的使用

上一篇下一篇

猜你喜欢

热点阅读