发表于: 2017-07-12 17:59:17
2 1270
今天完成的事情:
18.学习Junit,并尝试写自己的第一个单元测试,记着要写在自己的src/main/test下。
19.学习Spring,配置Spring和Junit
20.编写单元测试的代码,注意,你也可以尝试一下,先写单元测试的代码,再写接口,再写实现类。
Junit的配置:
使用maven,在pom中配置
按照任务下面的教程写的一个Calculator单元测试的实例
Calculator类:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int minus(int a, int b) {
return a - b;
}
public int square(int n) {
return n * n;
}
public void squareRoot(int n) {
for (;;)
;
}
public int multiply(int a ,int b) {
return a * b;
}
public int divide(int a ,int b) throws Exception {
if (0 == b) {
throw new Exception("除数不能为0");
}
return a / b;
}
}
测试类:
public class CalculatorTest {
private Calculator calculator = new Calculator();
private static Logger logger = Logger.getLogger("CalculatorTest.class");
@Before
public void setUp() throws Exception {
System.out.println("运行前");
}
@After
public void tearDown() throws Exception {
System.out.println("运行后");
}
@Test
public void add() throws Exception {
int result = calculator.add(1, 2);
Assert.assertEquals(4,result);
logger.debug("加法计算完毕");
}
@Test
@Ignore
public void minus() throws Exception {
int result = calculator.minus(5, 2);
Assert.assertEquals(4,result);
logger.debug("减法计算完毕");
}
@Test
public void square() throws Exception {
int result = calculator.square(5);
Assert.assertEquals(25, result);
logger.debug("平方计算完毕");
}
@Test(timeout = 1000)
public void squareRoot() throws Exception {
calculator.squareRoot(2);
logger.debug("循环的话会出现吗");
}
@Test
public void multiply() throws Exception {
int result = calculator.multiply(5,5);
Assert.assertEquals(25,result);
logger.debug("乘法计算完毕");
}
@Test(expected = Exception.class)
public void divide() throws Exception {
try {
calculator.divide(1, 0);
} catch (Exception e) {
logger.debug("抛出除以零异常");
}
}
}
测试结果:
带参数的测试类:
@RunWith(Parameterized.class)
public class CalculatorTest2 {
private Calculator calculator = new Calculator();
private int result;
private int param1;
private int param2;
public CalculatorTest2(int result, int param1, int param2) {
this.result = result;
this.param1 = param1;
this.param2 = param2;
}
@Parameterized.Parameters
public static Collection data() {
return Arrays.asList(new Object[][]{
{6,1,5},
{2,4,5},
{7,4,3}
});
}
@Test
public void add() throws Exception {
Assert.assertEquals(result, calculator.add(param1,param2));
}
}
测试结果:
另外:学会了用Junit直接运行代码,不用使用main来运行代码了
数据库插入测试:
public class UserCRUDTest {
@Test
public void insertTest() {
SqlSession sqlSession = SWSessionFactory.getSqlSession();
User user = new User("zhang","QQQ1215",2);
sqlSession.insert("cn.summerwaves.mapper.UserMapper.saveUser", user);
sqlSession.commit();
sqlSession.close();
System.out.println("Success");
}
}
21.查看日志,并转成Debug模式,练习调试,学会查看单步执行时的变量值。
log4j配置文件:
# logger设置
log4j.rootLogger = debug,stdout,D
# 输出到控制台
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
# 输出到文件
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://log/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
日志代码:
@Test(expected = Exception.class)
public void divide() throws Exception {
try {
calculator.divide(1, 0);
} catch (Exception e) {
logger.debug("抛出除以零异常");
}
控制台打印日志:
输出到文件的日志:
单步调试,查看变量:
明天计划的事情:
前个星期阿里云的域名备案刚好,今天已经把工具都部署到服务器上了,明天看看怎么用maven在服务器上跑代码,能做完的话把下边数据库测试也做了
遇到的问题:
1. 不会使用intellij自动生成测试用例
生成方法:点击类名,Alt + Enter
2. Junit只是按demo敲了一遍,怎么样在实际上应用还不知道,这个往后走在解决吧
3. 刚开始不知道为什么要打印日志
现在知道了,在程序出问题的时候查找问题所在
以及使用日志的正确姿势:
http://blog.csdn.net/a673341766/article/details/8156646
http://blog.csdn.net/u013955308/article/details/20712937
4. 日报不能过了12点再写
第二天就不能提交当天的日报了,“不能重复提交日报”
收获:
1. 对Junit有了初步的了解
2. 学会了打印日志,单步调试时查看变量
评论