JUnit测试

Posted sunhuaj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JUnit测试相关的知识,希望对你有一定的参考价值。

环境: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],expected,actual):比较两个基本类型或对象是否相等(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],expected,actual):检查两个对象是否为同一实例【对比: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     @Test
14     public void valueMetaControllerTest() {
15         PageValueMeta pageValueMeta = new PageValueMeta();
16         pageValueMeta.setId("jhhefsdf23423kdfs");
17         valueMetaService.insert(pageValueMeta);
18         System.out.println(pageValueMeta);
19     }
20 }

 

以上是关于JUnit测试的主要内容,如果未能解决你的问题,请参考以下文章

junit4单元测试--web项目中模拟登录会话,做全流程测试

使用java.lang.Exception的错误:测试类应该只有一个公共构造函数

四则运算单元测试

通过JUnit进行Android单元测试

JUnit代码测试是啥?怎么写代码?

JUnit代码测试是啥?怎么写代码?