2013-12-20 214 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报告。

相关问题