JUnit测试

发布日期:2019-04-09

环境:idea

通过maven管理jar包,导入:JUnit依赖(百度:mvn JUnit)

首先,对测试的内容要有一个规范的管理和命令。

  0、新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开

  1、测试类所在的包名应该和被测试类所在的包名保持一致 、

  2、测试类使用Test作为类名的后缀

  3、测试方法使用test作为方法名的前缀

 

对于测试的方法中,要求统一写为:public void不带返回参数的方法标签。重要注解:

  @Test:测试方法

    a、@Test(expected=XXException.class):如果程序的异常和XXException.class一样,则测试通过否则报错

    b、@Test(timeout=100):如果程序的执行能在100毫秒之内完成,则测试通过;否则报错

  @Ignore: 忽略该测试方法,暂不运行此段代码

  @Before: 再每一个测试方法之前运行(如果有多个,则每个测试方法之前都会首先执行该方法)

  @After: 每一个测试方法之后运行,与@Before相反

  @BeforeClass: 方法必须要是静态方法(static 声明),在before之前执行,只会执行一次(如果有多个测试方法)。

  @AfterClass: 方法必须要是静态方法(static 声明),在after之后执行,只会执行一次(如果有多个测试方法)。

 

JUnit提供了一些方法,帮助我们判断某个单元测试是否异常。我们把所有这些方法统称为断言(assert)。断言是单元测试最基本的组成部分。(下面都是常用的,具体语法可参考JUnitAPI文档)

  1、assertEquals([String message]expectedactual):比较两个基本类型或对象是否相等(expected和actual是原始类型数值(primitive value)或者必须为实现比较而具有equal方法message是选项,如果不相等时会打印message内容。测试时有一点疑惑:Integer在这里不能通过java自动装包拆包隐性转为int型还是通过指定int型才可。pin!)

  2、assertFalse([String message]boolean condition):断言为假,即condition条件为假时,返回success,反之failure

  3、assertTrue([String message]boolean condition):断言为真,即condition条件为真时,返回success,反之failure

  4、assertNull([String message]java.lang.Object object):检查是否为空;【对比:assertNotNull】

  5、assertSame([String message]expectedactual):检查两个对象是否为同一实例【对比:assertNotSame】

  6、fail( String message ):使测试立即失败,其中 message 参数使可选的。这种断言通常被用于标记某个不应该到达的分支(例如,在一个预期发生的异常之后)

 

示例,如我们在编写接口时,需要Service层进行Test(Controller层一般不用,如果要用的话,使用Mockio)。

代码如下:

1 @RunWith(SpringRunner.class) 2 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 3 public class ValueMetaServiceTest { 4 5 @Autowired 6 private ValueMetaService valueMetaService 7 8 @Before 9 public void before() {10 System.out.println("测试开始!")11 }12 13 @Test14 public void valueMetaControllerTest() {15 PageValueMeta pageValueMeta = new PageValueMeta()16 pageValueMeta.setId("jhhefsdf23423kdfs")17 valueMetaService.insert(pageValueMeta)18 System.out.println(pageValueMeta)19 }20 }