2013-12-20 262 views
47

目前,我有以下的build.gradle文件:如何使用Gradle運行JUnit測試?

apply plugin: 'java' 

sourceSets { 
    main { 
     java { 
      srcDir 'src/model' 
     } 
    } 
} 

dependencies { 
    compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar') 
    runtime fileTree(dir: 'libs', include: '*.jar') 
}  


的build.gradle文件是我的倉庫here。我所有的主要文件在src/model/和他們各自的測試在測試/型號

如何添加一個JUnit 4 依賴正確,然後運行這些測試在測試/模型文件夾?

回答

54

如何正確添加junit 4依賴項?

假設你正在解決對一個標準的Maven(或同等學歷)回購:

dependencies { 
    ... 
    testCompile "junit:junit:4.11" // Or whatever version 
} 

運行測試/模型的文件夾的測試?

定義你的測試源設置相同的方式:

sourceSets { 
    ... 

    test { 
     java { 
      srcDirs = ["test/model"] // Note @Peter's comment below 
     } 
    } 
} 

然後調用測試爲:

./gradlew test 

編輯:如果您使用JUnit 5,而不是有更多的步驟要完成,你應該遵循this tutorial

+7

'srcDirs = [「test/model」]'更精確一些,因爲它刪除了默認的測試源目錄,而'srcDir「test/model」'添加了另一個目錄。 「主要」來源集相同。 –

31

如果你設置了默認的gradle這個封裝結構中的項目,即:

src/main/java 
src/main/resources 
src/test/java 
src/test/resources 

,那麼你將不需要修改sourceSets運行測試。 Gradle會發現你的測試類和資源在src/test中。然後你可以像Oliver上面說的那樣跑步。需要注意的一件事:設置屬性文件並使用gradle和IDE運行測試類時要小心。我使用Eclipse,當從它運行JUnit時,Eclipse選擇一個類路徑(bin目錄),而gradle選擇另一個(構建目錄)。如果您編輯資源文件,這可能會導致混淆,並且在測試運行時看不到您的更改。

+2

將Eclipse構建文件導向與Gradle相同的目錄(可以防止一些令人沮喪的錯誤):項目 - >屬性 - > Java構建路徑 - >默認輸出文件夾:將「bin」替換爲「build」。但是......以我的經驗來看,這似乎有一種令人不安的習慣,即經常意外地「滑倒」回默認的「垃圾箱」。很高興知道是否有一種方法可以讓Eclipse默認使用「build」。 –

+2

@麥克 - 齧齒動物據我所知,它明顯不鼓勵共享eclipse和gradle的相同構建路徑(參見例如https://discuss.gradle.org/t/problems-with-eclipse-executing-junit-tests -compiled-by-gradle/2338) – mtraut

+0

好吧,我站好了! ...並且我想從編譯到相同目錄沒有什麼可以獲得的。對於大多數目的來說,eclipse構建器的功能變成了一個純粹的驗證工具:「哎呀,這不會因爲x,y和z而編譯」。 –

0

如果用Spring Initializr創建項目,一切都應該被正確配置和所有你需要做的就是運行...

./gradlew clean test --info 
  • --info,如果你不希望看到的測試輸出。
  • 刪除clean如果您不想重新運行自上次更改以來已經過的測試。在build.gradle需要

依賴於春季開機測試...

dependencies { 
    compile('org.springframework.boot:spring-boot-starter') 
    testCompile('org.springframework.boot:spring-boot-starter-test') 
} 

出於某種原因,測試運行沒有告訴你這一點,但它產生的build/reports/tests/test/index.html的HTML報告。

相關問題