![](/img/trans.png)
[英]NoSuchFieldError when trying to run a jUnit test with Spring
[英]What happens internally when I "Run Spring as JUnit Test"?
即使我的服務器沒有運行,當我作為 JUnit 測試運行時,我仍然可以加載 spring bean 和屬性文件。
這是怎么回事?
是否創建了編譯我的測試類的 JVM 實例?
我也沒有定義任何類路徑。
默認的類路徑是什么? 它怎么能找到我的春豆?
如果我想為屬性文件提供相對於哪個文件夾的位置,應該給出它的相對路徑?
您的 Spring bean 不依賴於您的服務器,它們在您的應用程序執行時被初始化,例如通過主方法或正在運行的單元測試。
Spring 的工作方式是,您將擁有一個定義 bean 的應用程序上下文,可能定義為:
Java 類 - 如果在 Java 中定義,該類將有一個 @Configuration 注釋,並且您的 bean 將被標記為 @Bean 注釋
Xml 文件 - 文件中的條目可能類似於
<bean id="myBean" class="com.my.package.MyBean">
<constructor-arg ref="anotherBean"/>
</bean>
注意:bean 也可以通過注解來定義。
良好實踐規定,理想情況下您應該有 2 個配置,一個用於服務 bean 等的應用程序和一個定義數據源的基礎結構配置,該配置可能因您的環境而異。 根據環境更改基礎架構設置的能力是您能夠在本地以及服務器上運行測試的關鍵原因。 您可能會發現您為基礎結構配置定義了配置文件,這意味着您可以滿足在不同環境中運行的測試,例如您的本地計算機上沒有 SQL 服務器,因此您將使用內存數據庫。
當應用程序執行時,在這種情況下通過單元測試,它將訪問您的 spring bean 定義並開始實例化您的 bean(您可能會注意到在測試開始時發生這種情況時有輕微的延遲)一旦完成,您的應用程序是那么就可以開始運行您的測試了。
在您的測試類的頂部,您可能有一些注釋:@RunWith(SpringJUnit4ClassRunner.class) - 這使得測試類在 Spring 支持下運行
如果使用 java config @ContextConfiguration(classes=myConfig.class)
如果使用 xml 配置 @ContextConfiguration(“classpath:com/my/app/resources/my-test-config.xml”
沒有看到任何代碼示例,很難完全理解你的問題,但簡而言之,你的類上的 @ContextConfiguration 注釋會告訴你的類它從哪里獲取你的 bean,但你可能也有定義你的數據源的配置文件.
默認類路徑將是您的項目設置使用的任何內容
更多信息可以在: http : //docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/
這取決於,在 Eclipse 中它運行他們的 jUnit 插件。 所有 springs 魔法都是由於特定的跑步者,而不是 jUnit 本身。 所有 spring 細節都在上下文文件中定義,但可以被覆蓋。 因此,如果您定義將使用的上下文文件,如果沒有,則將使用一些默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.