单元测试Junit 4--junit4 TestRunnner
Posted 还梦呦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单元测试Junit 4--junit4 TestRunnner相关的知识,希望对你有一定的参考价值。
Test Runners
我没想到一个特别合适的词来形容Test Runners的作用,所以多说几句:
Test Runners 是具有特殊功能的执行测试用例的通道,也可以理解为测试的执行者,例如可以同时运行多个测试用例,也可以具有这个测试执行者特有的功能。
用法1
/**
* Test Runner 示例代码
*/
public class TestRunnerDemo
@Test
public void runnerTest()
org.junit.runner.JUnitCore.runClasses(ExampleUnitTest.class, StudentTest.class);
我们可以通过org.junit.runner.JUnitCore.runClasses()方法来同时运行多个测试class文件,里面的参数个数是随意的,例如示例代码中按照顺序运行了ExampleUnitTest.class和StudentTest.class。
用法2
/**
* Test Runner 实例代码2
*/
@RunWith(Suite.class)
// 绑定的测试用例集合
@Suite.SuiteClasses(ExampleUnitTest.class, StudentTest.class)
public class TestRunnerDemo2
With与其他测试用例进行绑定,然后@Suite.SuiteClasses(ExampleUnitTest.class, StudentTest.class)来设置绑定的测试用例的集合,当运行这个测试用例的时候,绑定的集合也会运行。
用法3
package com.lzp.unittestdemo.testrunner;
import com.lzp.unittestdemo.Utils;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import java.util.Arrays;
import java.util.Collection;
/**
* <p>
* Test Runner 示例代码3
*/
@RunWith(Parameterized.class)
public class TestRunnerDemo3
/**
* name可以用来描述这个测试的信息
* 其中index表示当前的索引值,因为执行的时候会遍历集合
* 0 表示参数键值对的第一个位置
* 1 表示参数键值对的第二个位置,坐标以此类推
*/
@Parameters()
public static Collection<Object[]> data()
return Arrays.asList(new Object[][]
0, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 5, 6, 8
);
private int fInput;
private int fExpected;
/**
* 这里模拟了创建对象的过程,Juit会自动把@Parameters里面的数据集合,按照顺序依次放入构造方法中
* */
public TestRunnerDemo3(int input, int expected)
fInput = input;
fExpected = expected;
System.out.println(input + " :" + expected);
/**
* 测试方法,通过Assert.assertEquals判断参数是否符合我们的期望
* */
@Test
public void test()
Assert.assertEquals(fExpected, Utils.compute(fInput));
使用@RunWith(Parameterized.class)会稍微复杂一点,但是使用起来非常的方便,我们可以创建很多个相同类型的对象,然后通过测试方法对属性进行操作,验证我们创建的类是否符合我们的期望。
用法4
@RunWith(Categories.class)
// 为这个测试添加分类
@Category(MyCategory.class)
// 绑定的测试类集合
@Suite.SuiteClasses( TestRunnerDemo.class, TestRunnerDemo3.class )
// 交集,运行SuiteClasses中与自己分类相同的测试类
//@Categories.IncludeCategory(MyCategory.class)
// 除去交集,运行SuiteClasses中与自己分类不同的测试类
@Categories.ExcludeCategory(MyCategory.class)
public class TestRunnerDemo4
@Test
public void test()
assertEquals(4, 2 + 2);
使用@Category可以对测试类添加分类,然后和@Suit结合使用,可以同时运行相同分类或不同分类的测试,算是上一种用法的升级版。
用法5
有时候我们会把测试方法卸载内部类中,这个时候我们需要使用@RunWith(Enclosed.class),这样可以运行内部类的测试方法, 这里贴出官方的demo连接:https://github.com/junit-team/junit4/wiki/\'Enclosed\'-test-runner-example ,大家可以学习一下。
用法6
使用第三方的Test Runner:
这是官网的举例,之后我们会用到MockitoJUnitRunner,其他的大家可以自己去了解一下如何使用。
以上是关于单元测试Junit 4--junit4 TestRunnner的主要内容,如果未能解决你的问题,请参考以下文章