Junit单元测试

来源:互联网 发布:dota2战绩查询软件 编辑:程序博客网 时间:2024/06/06 01:13
Maven创建的工程结构说明:

1)src/main/java:存放JAVA代码
2)src/main/resources:存放JAVA的资源文件
3)src/test/java:存放测试的JAVA代码
4)src/test/resources:存放测试JAVA代码需要用到的资源文件

pom.xml中增加:
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

单元测试:
1、通过继承类TestCase,测试方法必须以test开头来命名
如:
public class Test extends TestCase {
      public void test1(){
            System.out.println("单元测试一");
      }
      public void test2(){
            System.out.println("单元测试二");
      }
}

注意:这种方法中写的所有的方法都必须是以test开头,例如:testXXXX
执行上面的代码后会在左边显示出这两个测试方法是否执行成功,绿色代表执行成功,红色代表执行失败,且test1跟test2方法上面的会显示X。





2、需要在测试方法前面加入注解,而注解的类型分别如下:
@Test:表明这是一个测试方法
@Before:每执行一个测试方法前都会先执行被标注了此注解的方法
@After:每执行一个测试方法后都会先执行被标注了此注解的方法
@BeforeClass:测试用例初始化时执行被@BeforeClass标注的方法,只会执行一次
@AfterClass:当所有测试执行完毕之后,执行进行收尾工作,也就是执行被@AfterClass标注的方法,只会执行一次

注意:
此时方法名可以随便写,不用一定要写成testXXX了。
@BeforeClass与@AfterClass所标注的测试方法要定义成static类型才能被执行
如:

public class Demo2 {
      @BeforeClass
      public static void method5() {
            System.out.println("Demo2.method5()");
      }
      @Before
      public void method3() {
            System.out.println("Demo2.method3()");
      }
      @Test
      public void method1() {
            System.out.println("Demo2.method1()");
      }
      @Test
      public void method2() {
            System.out.println("Demo2.method2()");
      }
      @After
      public void method4() {
            System.out.println("Demo2.method4()");
      }
      @AfterClass
      public static void method6() {
            System.out.println("Demo2.method6()");
      }
}

执行结果为:
Demo2.method5()
Demo2.method3()
Demo2.method1()
Demo2.method4()
Demo2.method3()
Demo2.method2()
Demo2.method4()
Demo2.method6()

3、断言(Assert)
单元测试必须要用到断言,被用来检查非法情况而不是错误情况,即在该程序正常工作时绝不应该发生的非法情况,用来帮助开发人员对问题的快速定位。
常用的API如下:
assertEquals(a,b):判断两个数据是否一致
assertNotEquals(a,b):判断两个数据是否不一致;
assertNull(object):查看对象是否为空
assertNotNull(object):查看对象是否不为空;
assertTrue(...):判断当前运行结果是否为真;
assertFalse(...):判断当前运行结果是否为假;

如:
public class Demo3 {
      @Test
      public void equals(){
            assertEquals(2,2);
      }
      @Test
      public void unequals(){
      assertNotEquals(1,2);
    }
}

断言与异常的区别
断言用在那些你知道绝对不会发生的事情上,但是因为人总是会犯错误,保不准你写出来的东西跟你想的不一样。所以assert用来捕捉的是程序员自己的错误。
但异常(exception)主要用于捕捉的是用户或者环境的错误。

4、打包类测试
介绍:
打包类测试,是把所有的测试类打包在一起测试,即在测试方法前引入所有的测试类即可。
优点:
可以一次性的测试所有的方法,而不用一个一个的去跑了。
如:
@RunWith(Suite.class)
@SuiteClasses({Demo1.class,Demo2.class,Demo3.class})
public class JunitTestAll {
}



0 0
原创粉丝点击