在慕课网上学习了Junit的使用,觉得很不错,做一下笔记。
一、介绍
Junit是一个Java的单元测试框架。可以再开发项目是进行测试,节省了后期维护的时间和成本。
二、使用前
要使用Junit,需要下载两个jar包,
- junit.jar
- hamcrest-core.jar
由于官网上的下载地址无法下载,请同学们自行找资源啦。
三、测试
工具:eclipse
1、创建工程,导入jar包,一步到位!
目录结构:
2、创建一个Source Folder,命名为test,用来进行测试代码。注意test和src下的包名一致。然后测试类名为“类名”+Test,测试方法名为test+“方法名”。
public class Calculator {
public int add(int i,int j){
return i+j;
}
}
public class CalculatorTest {
@Test
public void testAdd() {
assertEquals(2, new Calculator().add(1, 1));
}
方法是断言两个值相等,相等则运行正确,不相等则出错。
3、注意测试方法的名字都是public void 方法名(),没有参数。
运行结果:
表示testAdd方法运行得到我们预期的结果。即 2=add(1+1)。
4、注解方法介绍。
public class AnotationTest {
/*
* @Test:将一个普通的方法修饰成为一个测试方法
* @Test(expected=XX.class)
* @Test(timeout=毫秒 )
* @BeforeClass:它会在所有的方法运行前被执行,static修饰
* @AfterClass:它会在所有的方法运行结束后被执行,static修饰
* @Before:会在每一个测试方法被运行前执行一次
* @After:会在每一个测试方法运行后被执行一次
* @Ignore:所修饰的测试方法会被测试运行器忽略
* @RunWith:可以更改测试运行器 org.junit.runner.Runner
*/
@Test(expected=ArithmeticException.class)
public void testDivide() {
assertEquals(3, new Calculate().divide(6, 0));
}
@Ignore("...")
@Test(timeout=2000)
public void testWhile() {
while(true) {
System.out.println("run forever...");
}
}
@Test(timeout=3000)
public void testReadFile(){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5、我们还可以使用Suite套件来测试多个类。
@RunWith(Suite.class)
@Suite.SuiteClasses({})
public class SuiteTest {
/*
* 测试套件,可一次测试多个类,加入SuiteClasses({})中。
*/
}
6、可以使用Parameterized测试多组数据
@RunWith(Parameterized.class)
public class ParameterTest {
/*
* 1.更改默认的测试运行器为RunWith(Parameterized.class)
* 2.声明变量来存放预期值 和结果值
* 3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰
* 4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
*/
int expected =0;
int input1 = 0;
int input2 = 0;
@Parameters
public static Collection<Object[]> t() {
return Arrays.asList(new Object[][]{
{3,1,2},
{4,2,2}
}) ;
}
public ParameterTest(int expected,int input1,int input2) {
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
}
@Test
public void testAdd() {
assertEquals(expected, new Calculate().add(input1, input2));
}
}
get到了一个实用工具,加油。