![](/img/trans.png)
[英]Difference between src/main/java and src/test/java in a Maven project
[英]Where on a Maven build should a test framework reside - src/test/java or src/main/java?
我從本網站之前的答案中了解到,對於 Maven 構建:
src/main/java
將部署到生產環境,而src/test/java
不會。src/main/java
包含主應用程序,而src/test/java
將包含測試主應用程序的代碼現在我的問題是,在編寫測試框架時,哪種方法更好/更差:
src/main/java
上?src/main/java
上?不知何故陷入了正確地可視化這一點 -
方法 1似乎是正確的,因為測試框架將是構建的主要目的,因此這將是主要應用程序。
但是不知何故,我無法想象將測試框架部署到生產環境中。
方法 2似乎是正確的,但是如果主要目的是編寫一個測試框架,那么src/main/java
中的 go 會是什么? 對於我的測試框架應用程序,它會是空的還是不存在的?
對此的任何建議都會有所幫助。
我認為你會誤入歧途
- src/main/java 將部署到生產環境,而 src/test/java 不會。
我會把它改寫為
- src/main/java 包含模塊消費者將使用的代碼(這是您模塊的目的)
src/main/java
(這假設您將測試框架構建為單獨的模塊)
如果您需要現實生活中的示例,您無需再看JUnit
(傳奇的測試框架)
更喜歡與TestNG
? TestNG 的代碼位於子模塊“核心”中,但即便如此:
一個有趣的問題。
就個人而言,如果情況沒有明確禁止我這樣做,我總是會隨生產代碼一起發布測試框架。 為什么?
使用測試框架,您還可以包含“模擬”或“假”類,這將有助於簡化和最小化單元測試,因為復雜結構的 mocking 往往會使單元測試膨脹,而且乍一看其要點通常不可見。
如果作為 JAR 交付並作為依賴項加載,生產代碼的用戶也可以使用帶有 Mock 類的測試框架進行測試。
測試框架是除主應用程序之外的另一種實現,以提高應用程序和使用它作為依賴項的組件的可測試性。
摘要:除非有不同的說法,否則默認情況下,我會將其與生產應用程序一起發布(如果您使用 Maven,可以將其放在單獨的模塊中),即src/main/java
這是 maven 項目的包/目錄最佳實踐樹,希望對您有所幫助:
src --- main ----
| |
|--- test |--- config
| |
\--- site |--- java
|
|--- scripts
|
|--- resources
因此,如果該應用程序是一個測試框架(據我了解),我認為您應該將其放在src/main/java中,所有主要的 java 代碼都在其中。
如果你寫一個測試框架my-test-framework
,你把代碼放到src/main/java
中。 當您在某些 JAR my-jar
中使用測試框架時,您將其聲明為test
范圍依賴項。 然后代碼不會 go 來生產。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.