maven多module項目中千萬不要引入其他模組的單元測試代碼

來源:互聯網
上載者:User

標籤:maven   測試   module   多模組   noclassdeffounderror   

本文出處:http://blog.csdn.net/chaijunkun/article/details/35796335,轉載請註明。由於本人不定期會整理相關博文,會對相應內容作出完善。因此強烈建議在原始出處查看此文。


這兩天一直在整理一些舊的代碼,將原來的混亂東西升級到maven管理。這其中也免不了將大項目拆分成若干個module(這裡糾正一個發音,不是“貓丟”,是[‘mɑ?d?ul],包闊我在內很多人都念錯)來管理。然而為了在測試的時候圖省事,在各個模組都引用的基礎module中src/test/java中建立了一個BaseTest,

package net.csdn.blog.chaijunkun.util;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(locations="classpath:applicationContext*.xml")public abstract class BaseTest {@Testpublic abstract void doTest();}

然後其它module中的所有單元測試類都繼承自BaseTest。免去了寫上述註解的麻煩。然而,在執行測試時出現了NoClassDefFoundError: net/csdn/blog/chaijunkun/util/BaseTest。奇怪的是引入公用單元的src/main/java代碼都能正常載入。


後來經過參考無數的資料後來想通了,maven單元測試模型是建立在“獨立”的思想之上的,目的就是不受其他環境的幹擾從而純粹地驗證自身模組的可用性和正確性。因此測試層級的代碼之間是不能被其他模組引用的。

將其他模組的單元測試代碼解除src/test/java級引用後,項目成功build。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.