4.0.0 org.example springboot-rabbitmq-fanout-producer 1.0-SNAPSHOT 8 8 org.springframework.boot spring-boot-dependencies 2.3.2.RELEASE pom import org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test
可見,我們的單元測試注解是來源spring-boot-starter-test這個依賴的。
# 服務端口
server:
port: 8080
1.3 主啟動package com;
import javafx.application.Application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class FanoutProducer {public static void main(String[] args) {SpringApplication.run(FanoutProducer.class, args);
}
}
1.4 業(yè)務類package com.service;
@Component
public class OrderService { public void makeOrder() { System.out.println("測試成功!");
}
}
1.5 單元測試類package com.test;
import com.service.OrderService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class FanoutProducerApplicationTests {@Autowired
OrderService orderService;
@Test
public void contextLoads() throws Exception {orderService.makeOrder();
}
}
Springboot的@RunWith(SpringRunner.class)注解的意義在于Test測試類要使用注入的類,比如@Autowired注入的類,有了@RunWith(SpringRunner.class)這些類才能實例化到spring容器中,自動注入才能生效,不然直接一個NullPointerExecption。
當然,你也許會看見有些人使用時,沒有加上也可以正常使用,具體原因未知,可能是引用的依賴版本問題,視情況而定就行。
關注畫了圈的即可。
首先針對SpringBoot的測試類,2.2版本之前和2.2版本之后是不一樣的,在2.2版本之前需要貼注解@SpringBootTest和@RunWith(SpringRunner.class)需要在Spring容器環(huán)境下進行測試,因為@Test導包的是org.junit.Test,而 在2.2版本之后只需要貼注解@SpringBootTest,@Test導包為org.junit.jupiter.api.Test
三、重要事項創(chuàng)建的測試類必須在主啟動類所在包路徑同級下或其子級下,否則無法掃描到bean,且無法注入需要的bean,會報錯
正確示例目錄結構:
錯誤示例:
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧