Junit4单元测试学习,Android单元测试

时间:2019-10-06 22:22来源: 操作系统
1、Junit4学习2、断言Assert学习 着力用法实操 CSDN同步发布 1、新建测量试验类 public class Caculation { public double sum(double numA, double numB) { return numA + numB; } public double multiply(double numA, double nu

1、Junit4学习2、断言Assert学习

着力用法实操

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部分的单元测验代码。

图片 1

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);
    }

}

一、使用IDEA创立单元测验

在要求测量检验的类右键,在弹出框选取GO TO->test 图片 2图片.png 然后再对应打勾选拔测验方法 图片 3图片.png

Junit断言及注解表明

二、知识点记录

  1. @Test注明:是Junit的测量试验方法。注意:测验方法必得是public void来修饰,况兼不分包参数
  2. @BeforeClass注明:那一个注脚目示这一个方法会在富有测验方法推行从前实践,因为是static修饰的静态方法,所以只会施行壹回。平时用来进展部分能源的加载。
  3. @AfterClass注解:这几个注明目示那么些方法会在具备测量试验方法施行之后实践,因为是static修饰的静态方法,所以只会实行二回。平日用来拓宽一些财富的放飞。
  4. @Before表明:那些注利水示这几个方法会在种种测量试验方法此前施行三遍,即有多少个测量试验方法就能够试行稍微次。
  5. @After申明:这几个注清热示这几个方法会在各类测量试验方法之后实践一遍,即有几个测量检验方法就能够施行多少次。
  6. @RunWith注明:能够改换测量检验运营器org.junit.runner.Runner。常常用来公司多个测量检验类一同运营,称为测验套件,测验套件类不能够包涵别的测验方法。
  7. @Suite.SuiteClasses注明:更换测量试验运营器为Suite.class,并把多少个测量检验类以数量的点子传到Suite.SuiteClasses中去。
  8. @Ignore:所修饰的测量试验方法会被测量试验运营器忽略。
  9. 测量试验战败表明:Failure:平常是由于测验结果和预期结果不一致等引发的,表示测量试验的那些点开采了难题error:是由代码极度引起的,它能够产生于测量检验代码本身的失实,也得以是被测验代码中隐敝的bug

断言

  • assertArrayEquals(expecteds, actuals) 查看三个数组是或不是等于。
  • assertEquals(expected, actual) 查看八个对象是或不是等于。类似于字符串相比使用的equals()方法
  • assertNotEquals(first, second) 查看多少个指标是或不是不对等。
  • assertNull(object) 查看对象是否为空。
  • assertNotNull(object) 查看对象是还是不是不为空。
  • assert萨姆e(expected, actual) 查看多个对象的援用是还是不是等于。类似于接纳“==”相比七个对象
  • assertNotSame(unexpected, actual) 查看五个目的的援用是或不是不对等。类似于采取“!=”比非常多个指标
  • assertTrue(condition) 查看运维结果是还是不是为true。
  • assertFalse(condition) 查看运维结果是不是为false。
  • assertThat(actual, matcher) 查看实际值是或不是满意内定的尺码
  • fail() 让测量检验失利

瞩目:上边的章程,都有贰个重载的章程,能够在方今加叁个String类型的参数,表示只要证实退步以来,将用这一个字符串作为战败的结果告知。
比如:
assertEquals("Current user Id should be 1", 1, currentUser.id());

三、断言

官方表明是:编写代码时,我们连年会做出一些万一,断言便是用来在代码中捕捉这个即使,能够将断言看作是十分管理的一种尖端形式。断言表示为局地布尔表达式,技师相信在前后相继中的有些特确定地点该表述式值为真。能够在任何时候启用和剥夺断言验证,因而得以在测量检验时启用断言,而在安即刻禁止使用断言。一样,程序投入运作后,最后顾客在蒙受难点时得以重复启用断言。

Junit测验框架中Assert类正是落到实处断言的工具,首要功能如下:单元测量试验用于判定有些特定条件下有个别方法的一言一动;施行单元测量检验为了注明某段代码的施行结果和期望的同等。

1、assertEquals(expected, actual):查看四个对象是或不是等于。类似于字符串比较使用的equals()方法;assertNotEquals(first, second):查看八个对象是或不是不等于。参数expected为顾客愿意某偶然时对象的值,actual为某一天天对象实际的值。假诺这两值极度的话(通过对象的equals方法比较),说西楚码运维是没有错的。2、assertNull:查看对象是或不是为空。assertNotNull:查看对象是还是不是不为空。3、assertSame(expected, actual):查看多个目的的援引是不是等于,类似于选取“==”相比三个对象;assertNot萨姆e(unexpected, actual):查看五个对象的引用是不是不等于,类似于选择“!=”相比较七个目标。4、assertTrue(String message, boolean condition) 要求condition == true,查看运营的结果是还是不是为true;assertFalse(String message, boolean condition) 要求condition == false,查看运营的结果是还是不是为false。以咬定有个别条件是真依然假,尽管和预期的值一样则测量试验成功,不然测量检验失利。

注解

  • @Before 起始化方法
  • @After 释放财富
  • @Test 测验方法,在那边能够测量检验期望极度和过期时间
  • @Ignore 忽略的测量检验方法
  • @BeforeClass 针对全部测量检验,只举办一回,且必需为static void
  • @AfterClass 针对具备测量检验,只进行贰回,且必须为static void
  • @RunWith 钦点测量检验类使用有个别运转器
  • @Parameters 钦命测量试验类的测验数据会集
  • @Rule 允许灵活加上或再度定义测验类中的每个测量检验方法的行为
  • @FixMethodOrder 钦点测验方法的施行顺序

一个测验类单元测验的举办种种为:
@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单元测量试验框架的选择

编辑: 操作系统 本文来源:Junit4单元测试学习,Android单元测试

关键词: