发表于: 2017-09-28 09:34:19

1 621


一 今天完成的事情:

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时,能够加深所测试的类的理解。


返回列表 返回列表
评论

    分享到