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 }