歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

這兩天一直在整理一些舊的代碼,將原來的混亂東西升級到maven管理。這其中也免不了將大項目拆分成若干個module來管理。然而為了在測試的時候圖省事,在各個模塊都引用的基礎module中src/test/java中建立了一個BaseTest,

package com.linuxidc.www.linux.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 {

 @Test
 public abstract void doTest();
 
}

然後我希望其它module中的所有單元測試類都繼承自BaseTest,規范化代碼。然而,在執行測試時出現了NoClassDefFoundError: com/linuxidc/www/linux/util/BaseTest。引入公共單元的src/main/java代碼都能正常加載。

經過參考一些Maven的資料得知,其工作機制實際上是包的依賴管理。在規定的標准目錄下,能夠在模塊之間引用的代碼只能存在於main目錄下。而單元測試(test目錄下的代碼)模型是建立在“獨立”的思想之上的,目的就是不受其他環境的干擾從而純粹地驗證自身模塊的可用性和正確性。因此單元測試代碼之間是不能被其他模塊引用的。

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

《Maven實戰》(許曉斌著)完整高清版PDF 下載見 http://www.linuxidc.com/Linux/2014-12/110503.htm 

Maven 3.1.0 發布,項目構建工具 http://www.linuxidc.com/Linux/2013-07/87403.htm

Linux 安裝 Maven http://www.linuxidc.com/Linux/2013-05/84489.htm

Maven3.0 配置和簡單使用 http://www.linuxidc.com/Linux/2013-04/82939.htm

Ubuntu下搭建sun-jdk和Maven2 http://www.linuxidc.com/Linux/2012-12/76531.htm

Maven使用入門 http://www.linuxidc.com/Linux/2012-11/74354.htm

Maven 的詳細介紹:請點這裡
Maven 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved