2015-09-28 133 views
2

我正在使用junit 4.12jmockit 1.19 & spring-test 4.1.1.RELEASE來測試我的Spring MVC Java項目。在我pom.xml這些依賴的JMockit未正確初始化

訂單:

  • jmockit
  • junit
  • spring-test

測試用例爲服務層是工作的罰款。我只用於測試控制器的彈簧測試。在測試控制器,我得到了以下錯誤:

java.lang.IllegalStateException: JMockit wasn't properly initialized; please ensure that jmockit precedes junit in the runtime classpath, or use @RunWith(JMockit.class)

對於服務層,我通過在測試類使用@RunWith(JMockit.class)解決了這個錯誤。

但是對於控制器我需要用@RunWith(SpringJUnit4ClassRunner.class)進行註釋。

如何解決此錯誤?

注:我把jmockitjunitpom.xml

+0

如果您可以升級到Spring Framework 4.2.1,現在有一流的JUnit _Rules_支持。所以你不需要'SpringJUnit4ClassRunner':http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-junit4-rules –

+0

我相信你將需要顯示一個示例測試類和一個重現問題的示例pom.xml文件。我已經測試了這個工具組合(jmockit,junit和spring-test),但沒有發現初始化失敗。 –

回答

1

我不能完全肯定這將解決你的問題,因爲我使用jmockit自己,遇到類似的作風問題纔剛剛開始。

您是否嘗試過使用-javaagent:?適用於所有JUnit測試(Eclipse)的最簡單方法是轉到JRE設置並添加爲虛擬機參數(首選項 - > JRE->編輯 - >虛擬機默認值)。

此外,我通過市場找到了一個Eclipse JMockit插件,該插件將自動將javaagent附加到任何junit測試以避免JRE配置。

最後,在你的POM,你可以嘗試(雖然我沒有測試它自己還):

 <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <argLine>-javaagent:${org.jmockit:jmockit:jar}</argLine> 
      </configuration> 
     </plugin> 

但是,請記住,這隻會工作的行家啓動測試,而不是通過IDE。我還沒有找到一種方法讓m2e插件瞭解將javaagent附加到junit測試的要求。