当前位置: 首页 > 知识库问答 >
问题:

向Gradle添加额外的测试套件

公羊宇定
2023-03-14

我正在尝试将Gradle(1.4)添加到一个现有的项目中,该项目有多个测试套件。位于src/test/java中的标准单元测试成功运行,但我在设置任务以运行位于src/integration-test/java中的JUnit测试时遇到了麻烦。

当我运行gradle inttest时,对于src/main中的类,我遇到了几个Count find symbol错误。这使我认为依赖项设置不正确。如何设置inttest以便它运行我的JUnit集成测试?

Build.Gradle

apply plugin: 'java'

sourceCompatibility = JavaVersion.VERSION_1_6

sourceSets {
    integration {
        java {
            srcDir 'src/integration-test/java'
        }
        resources {
            srcDir 'src/integration-test/resources'
        }
    }
}

dependencies {
    compile(group: 'org.springframework', name: 'spring', version: '3.0.7')

    testCompile(group: 'junit', name: 'junit', version: '4.+')
    testCompile(group: 'org.hamcrest', name: 'hamcrest-all', version: '1.+')
    testCompile(group: 'org.mockito', name: 'mockito-all', version: '1.+')
    testCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')

    integrationCompile(group: 'junit', name: 'junit', version: '4.+')
    integrationCompile(group: 'org.hamcrest', name: 'hamcrest-all', version: '1.+')
    integrationCompile(group: 'org.mockito', name: 'mockito-all', version: '1.+')
    integrationCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')
}


task intTest(type: Test) {
    testClassesDir = sourceSets.integration.output.classesDir
    classpath += sourceSets.integration.runtimeClasspath
}

细节:1.4级

解决方案:我没有为集成测试源集设置编译类路径(参见下面)。在我的I代码中,我将编译类路径设置为sourcesets.test.runtimeClasspath,这样我就不会对“IntegrationCompile”有重复的依赖关系。

sourceSets {
    integrationTest {
        java {
            srcDir 'src/integration-test/java'
        }
        resources {
            srcDir 'src/integration-test/resources'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
    }
}

共有1个答案

段干飞翔
2023-03-14

“Integration”源集尚未配置其编译和运行时类路径。这就是它无法从主源集中找到类的原因。您可以通过以下方式配置编译和运行时类路径:

sourceSets {
    integTest {
        java.srcDir file('src/integration-test/java')
        resources.srcDir file('src/integration-test/resources')
        compileClasspath = sourceSets.main.output + configurations.integTest
        runtimeClasspath = output + compileClasspath
    }
}
 类似资料:
  • 问题内容: 我试图将Gradle(1.4)添加到具有多个测试套件的现有项目中。位于中的标准单元测试已成功运行,但是我无法设置任务以运行位于中的JUnit测试。 当我运行时,我在遇到类错误。这使我相信依赖关系设置不正确。如何设置以便它将运行我的JUnit集成测试? build.gradle 详细信息: Gradle 1.4 解决方案: 我尚未为集成测试源集设置编译类路径(请参见下文)。在我的代码中,

  • 嗨,我正在尝试重新创建一个足球锦标赛,已经能够创建一个地图的集团,但现在想要添加到每个国家的点数。有人有什么好主意吗?请看看我已经做了什么。

  • 我有一个,作为布局管理器,我正在尝试获得这种安排: 忽略边框的额外深蓝色空间。 我总共有5列和3行,所有组件都将设置PreferredSize()设置为精确值,以完全适合同样具有首选大小(170 x 115)的JPanel。 问题是似乎在最后一列宽度上添加了30 pxls,因为仅在的宽度上添加了30 pxls(总共200个)组件显示正确,如下所示: 但由于额外的空间,最后一列被分隔开了。 它添加了

  • 我有两个视频文件,具有以下流: 文件1: 文件2: 两个文件都有完全相同的视频内容,但第一个视频有德语音轨,第二个视频有英语音轨。 如何从德语视频文件中提取音轨并将其添加到英语视频文件中,而不丢失英语字幕,并能够在媒体播放器中在这些音轨之间进行选择? 我对此进行了搜索,我找到了类似问题的多个答案,但都不起作用:有些只包含一个音轨,有些同时播放两个音轨。 我不确定这个问题是否应该在Super Use

  • 我在这里看到了一些例子:http://docs.oracle.com/javase/7/docs/api/javax/swing/joptionpane.html 它似乎表明我应该用一个自定义的按钮列表来替换我的组合框,这不是我想要的。我需要有3个按钮(好的,跳过,取消),以及项目列表。 更新:为了说明我的GUI应该是什么样子: null 目前我的代码如下所示: 灵感来自:Java:showInp

  • 我是新手。与Gradle我有多个项目构建文件。大多数项目构建文件都经过了适当的配置,工作良好,并生成了正确的输出。我正在尝试将其中一个项目从ANT build转换为Gradle build。我能够编译Java文件,并且能够生成WAR归档。 我在生成的WAR文件中注意到的一件事是,WEB-INF/lib目录中包含了额外的JAR文件。当我从ANT build system构建项目时,只有很少的jar文