发表于: 2017-07-12 17:59:17

2 1271


今天完成的事情:

18.学习Junit,并尝试写自己的第一个单元测试,记着要写在自己的src/main/test下。

19.学习Spring,配置SpringJunit

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. 学会了打印日志,单步调试时查看变量



返回列表 返回列表
评论

    分享到