JUnit学习笔记
一.导包
-
打开工程属性配置:工程 → 右键 → properties → Java Builder Path
-
配置
-
检查:
二.使用
- 新建 Calculate 类
package com.leige.stujunit;
/**
* 简单的加减乘除的计算
*
* @author TSL
*
*/
public class Calculate {
/**
* 加法
*
* @param a
* @param b
* @return
*/
public int addition(int a, int b) {
return a + b;
}
/**
* 减法
*
* @param a
* @param b
* @return
*/
public int subtraction(int a, int b) {
return a - b;
}
/**
* 乘法
*
* @param a
* @param b
* @return
*/
public int multiplication(int a, int b) {
return a * b;
}
/**
* 除法
*
* @param a
* @param b
* @return
*/
public int division(int a, int b) {
return a / b;
}
}
- 新建 CalculateJUnitTest 类
package com.leige.stujunit;
import org.junit.Test;
import junit.framework.TestCase;
/**
* junit 测试
*
* @author TSL
*
*/
public class CalculateJUnitTest {
@Test
public void testAddition() {
TestCase.assertEquals(14, new Calculate().addition(6, 7));
}
@Test
public void testSubtraction(){
TestCase.assertEquals(2, new Calculate().subtraction(9, 7));
}
@Test
public void testMultiplication(){
TestCase.assertEquals(10, new Calculate().multiplication(5, 2));
}
@Test
public void testDivision(){
TestCase.assertEquals(10, new Calculate().division(50, 2));
}
}
-
右键以Junit形式运行
-
结果输出
-
有错误的情况
-
无错误的情况
- 总结
- 测试方法上必须使用 @Test
- 测试方法必须使用 public void进行修饰
- 新建一个源代码目录来存放测试代码
- 测试类的包应该和被测试类的包一样
- 测试单元中的每个方法一定要能够独立测试,其方法不能有任何依赖
三.eclipse 生成测试包
如果测试需要测试的方法很多,不想逐个的写
- 新建测试源代码目录
为了和正常代码区分开
-
选中待测试的类 → 右键 → new → Other
-
选择 test 源代码目录
-
选择要测试的方法
-
得到待完善的代码
package com.leige.stujunit;
import static org.junit.Assert.*;
import org.junit.Test;
public class CalculateTest {
@Test
public void testAddition() {
fail("Not yet implemented");
}
@Test
public void testSubtraction() {
fail("Not yet implemented");
}
@Test
public void testMultiplication() {
fail("Not yet implemented");
}
@Test
public void testDivision() {
fail("Not yet implemented");
}
}
- 完善代码
package com.leige.stujunit;
import static org.junit.Assert.*;
import org.junit.Test;
import junit.framework.TestCase;
public class CalculateTest {
@Test
public void testAddition() {
TestCase.assertEquals(8, new Calculate().addition(0, 8));
}
@Test
public void testSubtraction() {
TestCase.assertEquals(10, new Calculate().subtraction(20, 10));
}
@Test
public void testMultiplication() {
TestCase.assertEquals(10, new Calculate().multiplication(5, 2));
}
@Test
public void testDivision() {
TestCase.assertEquals(10, new Calculate().division(100, 10));
}
}
- 总结
- 新建测试源代码根目录,保持代码清爽
- 在测试中结果中关于Failure和error的解释
- Failure 一般由测试单元使用断言方法判断失败引起的,这个报错,说明测试点发现了问题,即程序输出的结果和我们预期的不一样
- error 是由代码异常引起的,它可以产生代码本身的错误,也可以是测试代码中的一个隐藏bug!!!
四.JUnit运行流程
- 新建 JunitTestRunProcess
package com.leige.stujunit;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class JunitTestRunProcess {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("this is beforeClasss....");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("this is afterClasss....");
}
@Before
public void setUp() throws Exception {
System.out.println("this is brfore....");
}
@After
public void tearDown() throws Exception {
System.out.println("this is after....");
}
@Test
public void test1() {
System.out.println("this is test1....");
}
@Test
public void test2() {
System.out.println("this is test2....");
}
@Ignore
public void testIgnore(){
System.out.println("this is ignore ....");
}
}
- 查看结果
this is beforeClasss....
this is brfore....
this is test1....
this is after....
this is brfore....
this is test2....
this is after....
this is afterClasss....
- 总结
- @BeforeClass 修饰的方法会在所有方法被调用前执行,且该方法时静态的,所以当测试类被加载后就接着运行它,而且在内存中他只会存在一份实例,他比较适合加载配置文件(针对所有测试,只执行一次 )
- @AfterClass 所修饰的方法通常用来对资源管理,如关闭数据库连接(针对所有测试,只执行一次 )
- @Before 和 @After 会在每个测试方法前后各执行一次
- @Test 测试方法,在这里可以测试期望异常和超时时间
- @Ignore 忽略测试的方法
原文链接:https://blog.csdn.net/fulishafulisha/article/details/80158392