spring-boot项目中使用单元测试?
-
pom.xml
中引入spring-boot-starter-test
包,目前项目已经引入,无需重复<!-- SpringBoot 测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
新建测试目录
\test\java
, 把目录设为Test Source Root
image-20191219113425159.png
- 自动生成
JUnit
测试代码,在类名上使用快捷键Alt+Enter
image-20191219134257169.png
选择要测试的方法
image-20191219140621742.png
自动在目录下生成测试方法代码
image-20191219140744257.png
-
添加注解
@RunWith(SpringRunner.class) @SpringBootTest(classes = RuoYiApplication.class)
![image-20191219144658247.png](https://upload-images.jianshu.io/upload_images/2485349-d436598109e624fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 想要执行的时候,鼠标放在对应的方法,右键选择run该方法即可。
image-20191219142427568.png
-
几个常用的注解
@Test:把一个方法标记为测试方法 @Before:每一个测试方法执行前自动调用一次 @After:每一个测试方法执行完自动调用一次 @BeforeClass:所有测试方法执行前执行一次,在测试类还没有实例化就已经被加载,所以用static修饰 @AfterClass:所有测试方法执行完执行一次,在测试类还没有实例化就已经被加载,所以用static修饰 @Ignore:暂不执行该测试方法
卍解 :
@BeforeClass
和@AfterClass
在类被实例化前(构造方法执行前)就被调用了,而且只执行一次,通常用来初始化和关闭资源。@Before
和@After
和在每个@Test
执行前后都会被执行一次。@Test
标记一个方法为测试方法
image-20191219144043569.png
有两个属性
excepted:测试方法会检查是否抛出Exception异常
timeout:测试一个方法能不能在规定时间内完成
@Ignore
标记的测试方法不会被执行,例如这个模块还没完成或者现在想测试别的不想测试这一块。
`@Transactional` 单元个测试的时候如果不想造成垃圾数据,可以开启事物功能
@Test
@Transactional
public void test(){
}