发表于: 2017-09-28 09:34:19
1 620
一 今天完成的事情:
1 JUnit:
JUnit是一个Java语言的单元测试框架,是白盒测试。继承TestCase类,就可以用Junit进行自动测试了。
参考博客:http://blog.csdn.net/andycpp/article/details/1327346
http://blog.csdn.net/andycpp/article/details/1329218
JUnit简单步骤
(1)编写待测试类Calculator
public class Calculator {
private static int result;//存储运算结果
public void add(int n) {
result = result + n;//加法
}
public void substract(int n) {
result = result - 1;//减法,wrong。应为:result = result - n;
}
public void multiply(int n) {//未完成方法
}
public void divide(int n) {
result = result / n;
}
public void squareRoot(int n) {
for(;;);//死循环
}
public void clear() {
result = 0;//清零
}
public int getResult() {
return result;//返回结果啥
}
}
(2)build path:加入JUnit4
(3) 创建JUnit Test Case
右键待测试类,new JUnit Test Case ,勾选setup()。
修改JUNit测试类:
package org.math;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
public class CalculatorTest {
private static Calculator calculator = new Calculator();
@Before
public void setUp() throws Exception {
calculator.clear();
}
@Test
public void testAdd() {
calculator.add(3);
calculator.add(4);
assertEquals(7, calculator.getResult());
}
@Test
public void testSubstract() {
calculator.add(8);
calculator.substract(3);
assertEquals(5, calculator.getResult());
}
@Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
}
@Test
public void testDivide() {
calculator.add(8);
calculator.divide(4);
assertEquals(2, calculator.getResult());
}
}
(4) Run As —— JUnit Test
JUnit核心1:断言
通过比较预期值和测试值是否一致,来判断测试是否通过。
assertArrayEquals(expecteds, actuals) | 查看两个数组是否相等。 |
assertEquals(expected, actual) | 查看两个对象是否相等。类似于字符串比较使用的equals()方法 |
assertNotEquals(first, second) | 查看两个对象是否不相等。 |
assertNull(object) | 查看对象是否为空。 |
assertNotNull(object) | 查看对象是否不为空。 |
assertSame(expected, actual) | 查看两个对象的引用是否相等。类似于使用“==”比较两个对象 |
assertNotSame(unexpected, actual) | 查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象 |
assertTrue(condition) | 查看运行结果是否为true。 |
assertFalse(condition) | 查看运行结果是否为false。 |
assertThat(actual, matcher) | 查看实际值是否满足指定的条件 |
fail() | 让测试失败 |
JUnit核心2:注解
Junit4新增了很多注解用法,使得其更有效率
@Before :初始化方法。每个测试方法执行前执行一次。
@After :释放资源。每个测试方法执行后执行一次。
@Test :测试方法。加上(timeout = 1000)为限时测试,用于死循环判断,单位毫秒;加上(expected = 异常名.class)传递异常,检测是否抛出异常
@Ignore :忽略方法。在未完成的方法前加上。不参加此次测试。
@BeforeClass :针对所有测试,只执行一次,且必须为static void。
@AfterClass :针对所有测试,只执行一次,且必须为static void。
@RunWith :指定测试类使用某个运行器。
@Parameters :指定测试类的测试数据集合
@Rule :允许灵活添加或重新定义测试类中的每个测试方法的行为。
@FixMethodOrder :指定测试方法的顺序。
二 明天计划的事情:
1 Spring的学习
三 遇到的问题:
1 直接使用JUnit进行测试时,对数据库的操作是固化的,比如测试了一个create方法,id主键自动增加。在粗略看了博客后续的教程有提到使用Spring测试套件有一个测试完自动回滚对数据库操作的机制,保护了数据库。
四 收获:
JUnit对项目的支撑作用不止体现在用于测试时候,更多地是对于整个项目需要实现的功能做一个明确的指示。换句话说,在未完成所有方法时,就能通过编写JUnit来把控好项目的需求。并且,编写JUnit时,能够加深所测试的类的理解。
评论