點開@SpringBootTest原始碼中查看
#可以在之後加入臨時配置, 也可以使用命令列args參數設定.設定的測試專用參數會覆蓋設定檔中的。
package com; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest(args = {properties = {"test.properties=1234"}) public class TestProperties { @Value("${test.properties}") private String ps; @Test public void test(){ System.out.println(ps); } }
也可以使用命令列參數
args = {"--test.properties=4321"},
命令列參數的優先權比設定檔的高,所以當兩者共存的時候,以命令列的為主
@SpringBootTest(args = {"--test.properties=4321"},properties = {"test.properties=1234"})
這個測試類別設定的屬性只對目前測試有效,影響小
package com.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration//说明当前为配置类 public class TestBean { @Bean//创建bean public String mess(){ return "this bean run "; } }
在測試類別下,使用@Import註解載入目前測試配置
package com.test; import com.config.TestBean; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; @SpringBootTest @Import({TestBean.class}) public class TestBeanNow { @Autowired//注入bean对象 public String mess; @Test public void test(){ System.out.println(mess); } }
在測試類別中運行一般是不會啟動伺服器的,如下圖。都是顯示運行成功或失敗的訊息
我們Ctrl b點進@SpringBootTest原始碼中查看,有一個關於web的
預設值是MOCK,mock:預設提供一個模擬的web環境,不會啟動內嵌的伺服器
第一個是以你設定檔指定的連接埠啟動,如果沒有就預設以8080啟動
第二個mock:預設提供一個模擬的web環境,不會啟動內嵌的伺服器
第三個是不啟動伺服器
第四個是隨機連接埠啟動
我們測試隨機連接埠啟動
package com; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class WebTest { @Test public void test(){ } }
#運行了兩次看端口結果,都是隨機的
#以上是SpringBoot如何測試配置屬性與web啟動環境的詳細內容。更多資訊請關注PHP中文網其他相關文章!