1. Spring 對 Junit4,Junit5 的支持上的運用
文章目錄
- 1. Spring 對 Junit4,Junit5 的支持上的運用
- 每博一文案
- 2. Spring對Junit4 的支持
- 3. Spring對Junit5的支持
- 4. 總結:
- 5. 最后:
每博一文案
關于理想主義,在知乎上看到一句話:“他們并不是不懂別人口中的現實,他們只是不信,事情只能是現在這個樣子。”錯誤的、骯臟的、混亂的、輕松自如的、自言盡力了,有人真的不懂么?為了利益和怠惰做出這樣那樣或好或壞的事情,什么動物都會。有人會開脫和找借口,說著現實就是如此啊,無力改變世界就改變自己啊。他們對現狀搖搖頭然后果斷投入到漆黑的污水里去,義無反顧地。但理想主義者是不信的,他們先是在語言上畫一個大問號,再用行動畫一個大嘆號。他先問你,怎么就非得這樣不可?怎么就沒了別的辦法?然后再用做出來的事情告訴你,我告訴你就是還能有更干凈、更溫和、更有效的辦法!他們自己也有不能一塵不染的時候。但他們看著滿目漆黑也不信世界上就沒有潔白、干凈這回事。理想主義者就是不會相信生活和世界就是這樣了。不管它是別人眼中的好,還是壞。“一定有更好的辦法,也能夠通過合理的方式,緩慢地改善世界。愿意為了自己的理想而做些什么,甚至也愿意去犧牲什么。對于自己的手段、目的與認知,始終心懷疑問。即使做出的一切都看不到所謂的成效。即使這改變在活著的時候甚至也看不到。知道世界比較容易被忍受的這部分,是很多人用了很多代價換來的。但不會停下對好的東西的向往,還有向光明的地方行走的腳步。”這才算理想主義者吧。往往是重視精神價值超過物質利益。理想主義者把對精神價值的追求看作人生的主要追求,這些精神價值包括:尊嚴、正義、愛、美等等。而浪漫主義,諾瓦利斯說過:“在我看來,把普通的東西賦予崇高的意義,給平凡的東西披上神秘的外衣,使熟知的東西恢復未知的尊嚴,對有限的東西給予無限的外觀,這就是浪漫化。反過來說,這就是變得崇高、未知、神秘和無限的過程,通過這種聯系,這一浪漫化過程就會被對數化。它得到一個常用的表達:浪漫哲學。”
2. Spring對Junit4 的支持
準備工作,先在pom.xml
文件當中,導入相關依賴的 jar
包信息,如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.rainbowsea</groupId><artifactId>spring6-015-junit</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><!--倉庫--><repositories><!--spring里程碑版本的倉庫--><repository><id>repository.spring.milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository></repositories><dependencies><!-- spring context 依賴--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.11</version></dependency><!-- spring 對 Junit 支持的依賴--><!--spring對junit的支持相關依賴--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><!-- 這個版本spring6,既支持Junit4 又支持Junit5--><version>6.0.11</version></dependency><!-- junit4依賴--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><!-- @Resoure 注解 非簡單類型的注入,賦值--><dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version></dependency></dependencies></project>
準備好,對于的 Bean 對象用于測試:注意:需要將其 Bean 對象納入到 Spring IOC 容器當中進行管理上。
package com.rainbowsea.spring6.bean;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component(value = "user") // 交給 Spirng IOC 容器管理
public class User {@Value("張三") // spring 當中 value()注解簡單類型的,set注入,賦值private String name;public User(String name) {this.name = name;}public User() {}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
配置相關的:spring.xml
的配置信息的內容,這里我們用的是注解時開發,需要加上一個組件掃描 。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!-- 組件掃描--><context:component-scan base-package="com.rainbowsea.spring6.bean"></context:component-scan>
</beans>
單元測試:(一般平常的單元測試)如下:
上述:方式,代碼重復率高,復用性較差。
Spring提供的方便主要是這幾個注解:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(“classpath:spring.xml”)注意該:spring.xml 文件要一定要在類路徑下才行 。
在單元測試類上使用這兩個注解之后,在單元測試類中的屬性上可以使用 @Autowired。比較方便。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml") // 注意該:spring.xml 文件要一定要在類路徑下才行
優化如下:
使用@Resource 需要導入相關的 jar 包,如下:
<!-- @Resoure 注解 非簡單類型的注入,賦值--><dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version></dependency>
同時注意:該Juit4的@ Test 的注解是在:org.junit.Test; 包下的
package com.rainbowsea.spring6.test;import com.rainbowsea.spring6.bean.User;
import jakarta.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")
public class SpringJunit4Test2 {@Resource(name = "user")private User user;@Testpublic void testUser() {System.out.println(user.getName());}@Testpublic void testUser2() {System.out.println(user.getName());}@Testpublic void testUser3() {System.out.println(user.getName());}}
3. Spring對Junit5的支持
引入JUnit5的依賴,Spring對JUnit支持的依賴還是:spring-test,同時換成,junit5 ,還是在 pom.xml
文件當值配置相關依賴的 jar
如下:
<!-- junit5 依賴--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.0</version><scope>test</scope></dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.rainbowsea</groupId><artifactId>spring6-015-junit</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><!--倉庫--><repositories><!--spring里程碑版本的倉庫--><repository><id>repository.spring.milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository></repositories><dependencies><!-- spring context 依賴--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.11</version></dependency><!-- spring 對 Junit 支持的依賴--><!--spring對junit的支持相關依賴--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><!-- 這個版本spring6,既支持Junit4 又支持Junit5--><version>6.0.11</version></dependency><!-- junit5 依賴--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.0</version><scope>test</scope></dependency><!-- @Resoure 注解 非簡單類型的注入,賦值--><dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version></dependency></dependencies></project>
還是使用上面的 User 的 bean 對象進行測試:
在JUnit5當中,可以使用Spring提供的以下兩個注解,標注到單元測試類上,這樣在類當中就可以使用@Autowired注解了。
@ExtendWith(SpringExtension.class) @ContextConfiguration("classpath:spring.xml") // 同樣一定要是在類路徑下
@ContextConfiguration(“classpath:spring.xml”) // 同樣一定要是在類路徑下
同時注意:該Juit5 的@ Test 的注解是在:org.junit.jupiter.api.Test 包下的 ,選擇的時候不要,弄錯了。
單元測試:
package com.rainbowsea.spring6.test;import com.rainbowsea.spring6.bean.User;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:spring.xml")
public class SpringJunit5Test {@Resource(name = "user") // 非簡單類型的注入,賦值,交給Spring管理private User user;@Test // import org.junit.jupiter.api.Test;public void testUser() {System.out.println(user.getName());}@Test // import org.junit.jupiter.api.Test;public void testUser2() {System.out.println(user.getName());}@Test // import org.junit.jupiter.api.Test;public void testUser3() {System.out.println(user.getName());}}
4. 總結:
- Spring 對 Junit4 的依賴的 jar 包,同時
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring.xml") // 注意該:spring.xml 文件要一定要在類路徑下才行
- 同時注意:該Juit4的@Test 的注解是在:org.junit.Test; 包下的
- Spring 對 Junit5 的依賴的 jar 包,同時
@ExtendWith(SpringExtension.class) @ContextConfiguration("classpath:spring.xml") // 同樣一定要是在類路徑下
- 無論是 Junit4 還是 Junit5 當中的 @ContextConfiguration 注解當中的 @ContextConfiguration(“classpath:spring.xml”) 都是:一定要是在類路徑下才行的。
- 關于:Spring 對 Junit4,Junit5 的支持運用,大家靈活選擇運用即可,并不是非要選擇其中的哪個哪個啥的。滿足業務即可。
5. 最后:
“在這個最后的篇章中,我要表達我對每一位讀者的感激之情。你們的關注和回復是我創作的動力源泉,我從你們身上吸取了無盡的靈感與勇氣。我會將你們的鼓勵留在心底,繼續在其他的領域奮斗。感謝你們,我們總會在某個時刻再次相遇。”