Spring5 的测试框架本身就是依赖Junit5的,有部分用法需要了解Junit5才能够理解,好比如
@RunWith
这个注解,这个注解是Junit4的注解就是一个运行器
@RunWith(JUnit4.class)就是指用JUnit4来运行
@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
@RunWith(Suite.class)的话就是一套测试集合,
@RunWith(SpringRunner.class)
这个注解是首要而且是必须有的,至于选择RunWith那种套件,由自己选择 其中SpringRunner这个类是SpringJunit4ClassRunner
的一个子类,可以理解为简称。
一般在Spring测试框架中使用有四种形式可以使用
分别为注解性配置文件与非注解型配置,再之的分类是普通的Spring应用与Web形式的Spring应用
@RunWith(SpringRunner.class)
@ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/spring/dispatcher-config.xml")
@WebAppConfiguration
public class SpringTest {
@Test
public void tester(){
System.out.println("Hello");
}
}
他有一个简写的方式就是
@RunWith(SpringRunner.class)
@SpringJUnitConfig(locations = "file:src/main/webapp/WEB-INF/spring/dispatcher-config.xml")
public class SpringTest {
@Test
public void tester(){
System.out.println("Hello");
}
}
@RunWith(SpringRunner.class)
@ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/spring/dispatcher-config.xml")
@WebAppConfiguration
public class SpringTest {
@Test
public void tester(){
System.out.println("Hello");
}
}
相应的简写方式是
@RunWith(SpringRunner.class)
@SpringJUnitConfig(locations = "file:src/main/webapp/WEB-INF/spring/dispatcher-config.xml")
public class SpringTest {
@Test
public void tester(){
System.out.println("Hello");
}
}
对应,如果采用的是Java 配置文件作为Spring配置文件的话,基本上没有大的改变,只是将注解配置的
locations修改为class,并且配置为xxx.class就可以。
这个注解要求注入类型为TestContextBootstrapper
Class extends TestContextBootstrapper> value() default TestContextBootstrapper.class;
从源代码可以看得出来
可以通过配置DefaultTestContextBootstrapper 或者WebTestContextBootstrapper来决定测试的是Web应用还是普通Spring应用,此外也可以省去@WebAppConfiguration这样的配置信息
实例代码如下
@BootstrapWith(DefaultTestContextBootstrapper.class)
@ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/spring/dispatcher-config.xml")
public class SpringTest {
@Test
public void tester(){
System.out.println("Hello");
}
}
@BootstrapWith(WebTestContextBootstrapper.class)
@ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/spring/dispatcher-config.xml")
public class SpringTest {
@Test
public void tester(){
System.out.println("Hello");
}
}
@Profile注解用于设置在@Bean上面,用于声明,这个@Bean在@ActiveProfiles("devs"),的使用才会执行实例化,其实互相配套使用的
而且里面的值相同才会启用@ActiveProfiles在类级别上使用,也可以通过设置spring.profiles.active这个值,命令行启动的使用
java xx.jar -Dspring.profiles.active=dev,abc来指定启用的profile从而在不同的环境下启用不同的配置
@ActiveProfiles("dev") @Profile("dev")