在平时的开发当中,一个项目往往包含了大量的方法。如何去保证这些方法产生的结果是我们想要的呢?我们最容易想到的一个方式,就是我们通过
System.out来输出我们的结果,看看是不是满足我们的需求,但是项目中存在多个方法,我们总不能在每一个方法中都去输出一遍。这时候用单元测试框架junit就可以很好地解决这个问题。
junit内部提供了一个断言机制,它能够将我们预期的结果和实际的结果进行比对,判断出是否满足我们的期望。

假如我们要对加减乘除法进行验证。

public class Calculate{
      public int add(int a,int b){
            return a + b;
      }
      public int subtract(int a,int b){
            return a - b;
      }
      public int multiply(int a,int b){
            return a * b;
      }
      public int divide(int a,int b){
            return a / b;
      }
}

使用junit去测试。

public class CalculateTest{
      @Test
       public void testAdd(){
             assertEquals(3,new Calculate().add(1,2));
       }
       @Test
       public void testSubtract(){
             assertEquals(8,new Calculate().add(10,2));
       }
       @Test
       public void testMultiply(){
             assertEquals(2,new Calculate().add(1,2));
       }
       @Test
       public void testDivide(){
             assertEquals(5,new Calculate().add(10,2));
       }
}

遵循如下规则:

①每一个测试方法使用@Test进行修饰(表明这是一个测试方法)

②每一个测试方法使用public void进行修饰

③每一个测试方法不能携带参数

④测试代码和源代码是在不同的项目路径下

⑤测试类的包与被测试类的保持一致

⑥测试单元的每个方法可以独立测试

assertEquals是一个断言规则,里面有两个参数,第一个是表明预期值,第二个是表明实际值。运行测试类,就会运行每一个方法,也可以选择其中一个运行,只需要在相应的测试方法上面右键运行即可,运行成功不会出现错误信息,否则错误。

单元测试不是银弹,它不能帮助我们搞定所有问题。比如缓存(passwordFailedService)、数据库(accountService)和日志(logService)的实际处理情况,它都是无能为力的。这些都需要在集成测试中去验证,两者结合才能确保整个方法的逻辑链路正确无误。单元测试更重要的是做到了对自己的代码负责,并且这些测试用例可以更容易的帮助别人理解自己的代码。