@runwith注解需要引入啥依赖才能使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@runwith注解需要引入啥依赖才能使用相关的知识,希望对你有一定的参考价值。

在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境Spring框架在org.springframework.test.annotation 包中提供了常用的Spring特定的注解集,如果你在Java5或以上版本开发,可以在测试中使用它。

操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。

事实上,全新操作系统的设计和改良的关键工作就是对体系结构的设计,经过几十年以来的发展,计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一。

参考技术A 需要引入Spring-test的依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
Spring整合Junit的步骤
* 第一步:导入junit坐标和spring整合junit的坐标
* 第二步:使用junit的注解@RunWith把junit原有的运动类型转换为spring提供的
* 第三步:使用spring提供的@ContextConfiguration注解指定配置文件或配置类的位置
参考技术B 在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境Spring框架在org.springframework.test.annotation 包中提供了常用的Spring特定的注解集,如果你在Java5或以上版本开发,可以在测试中使用它。本回答被提问者采纳

spingboot集成单元测试

一注解说明


@SpringBootTest注解是扫描配置来构建测试用的Spring上下文环境。

@RunWith注解声明测试是在spring环境下运行的,其必须要有一个构造器的类才能运行。

SpringRunner.class是继承SpringJUnit4ClassRunner,主要作用是spring集成junit单元测试类。


二 顶级类测试


2.1引入单元测试依赖


 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>         <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test-autoconfigure</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>        <!-- spring 5.0 webflux--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency>  


2.2 创建包结构

注意哦,在测试类的java目录下和main子目录的java目录下,其最顶级的启动类包结构应该相同,否则要加包扫描注解。

本次示例先演示没有启动类的情况。


2.3 创建顶级类




/** * @Author lsc * @Description <p> 顶级类</p> * @Date 2019/10/20 18:14 * @Version 1.0 */

public class TestConfig {

public String getUser(){ return "youku1327"; }}


2.4 顶级类测试示例



/** * @Author lsc * @Description <p> </p> * @Date 2019/10/20 17:36 * @Version 1.0 */@RunWith(SpringRunner.class)// 如果没有main主类,是顶级类要指定classes@SpringBootTest(classes = TestConfig.class)public class Youku1Test {

@Test public void test(){ TestConfig testConfig = new TestConfig(); String user = testConfig.getUser(); // youku1327 System.out.println(user); }}


三 MockMvc 测试


3.1 创建controller层类




/** * @Author lsc * @Description <p> </p> * @Date 2019/10/20 18:53 * @Version 1.0 */@RestControllerpublic class TestController {

@GetMapping("youku1327") public String getUser(){ return "Hello World youku1327"; }}


3.2 创建主启动类




/** * @Author lsc * @Description <p> </p> * @Date 2019/10/20 18:45 * @Version 1.0 */@SpringBootApplicationpublic class TestApplication {

public static void main(String[] args) {

SpringApplication.run(TestApplication.class,args); }}


3.3 MockMvc测试示例




/** * @Author lsc * @Description <p> web 测试 </p> * @Date 2019/10/20 18:33 * @Version 1.0 */@RunWith(SpringRunner.class)@SpringBootTest@AutoConfigureMockMvcpublic class WebTest {

@Autowired private MockMvc mvc;

@Test public void exampleTest() throws Exception { // get请求 rui /youku1327 状态 200 期望值 Hello World youku1327 ResultActions resultActions = this.mvc.perform(get("/youku1327")).andExpect(status().isOk()) .andExpect(content().string("Hello World youku1327"));

}

}


四 webClient测试示例


在步骤三的基础上进行测试。



/** * @Author lsc * @Description <p> </p> * @Date 2019/10/20 19:00 * @Version 1.0 */@RunWith(SpringRunner.class)@SpringBootTest@AutoConfigureWebTestClient@WebFluxTest(TestController.class)public class WebClientTest {

WebTestClient webClient = WebTestClient.bindToController(new TestController()).build();

/*@Autowired private WebTestClient webClient;*/

@Test public void exampleTest() {

EntityExchangeResult<String> entityExchangeResult = webClient.get().uri("/youku1327").exchange().expectStatus().isOk() .expectBody(String.class).returnResult(); // Hello World youku1327 System.out.println(entityExchangeResult.getResponseBody()); }}



五 WebClient随机端口测试示例




/** * @Author lsc * @Description <p> </p> * @Date 2019/10/20 19:27 * @Version 1.0 */@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)public class webReadomTest {

@Autowired private WebTestClient webClient;

@Test public void exampleTest() { EntityExchangeResult<String> entityExchangeResult = this.webClient.get() .uri("/youku1327").exchange().expectStatus().isOk() .expectBody(String.class).returnResult(); // Hello World youku1327 System.out.println(entityExchangeResult.getResponseBody()); }

}


六  TestRestTemplate测试示例




/** * @Author lsc * @Description <p> </p> * @Date 2019/10/20 19:39 * @Version 1.0 */@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)public class RestTest {

@Autowired private TestRestTemplate restTemplate;

@Test public void exampleTest() { String body = this.restTemplate.getForObject("/youku1327", String.class); //Hello World youku1327 System.out.println(body); }}


七 更多测试


更多测试信息请查看官网指南

https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/html/






以上是关于@runwith注解需要引入啥依赖才能使用的主要内容,如果未能解决你的问题,请参考以下文章

SpringApplicationConfiguration 这个不能用 解决方案

单元测试 springboot-test

单元测试 springboot-test

spingboot集成单元测试

Sprin Boot无RunWith注解解决办法

使用RunWith注解改变JUnit的默认执行类,并实现自已的Listener