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

Gradle在相关测试项目中找不到包

申屠锦
2023-03-14

我试图为嵌套的多项目结构运行./gradlew build,但我遇到了一些问题,这些问题似乎只出现在具有测试源根的项目中。作为java和gradle的新手,我肯定我打破了不止一个惯例,但我仍然认为这是可行的。

从本质上说,所有的依赖项似乎都添加得很好,但当我有一个项目只有一个测试srcDir而依赖于另一个项目,而另一个项目有一个测试srcDir时,它就无法识别根项目中的包/符号。然而,具有常规srcDirs(不是测试)的项目似乎没有问题。

我的项目还有更多的内容,但这里是我尝试过的最简单的设置,它说明了这个问题。

qatests
    /Applications
        /AppGroupName
            /AppBasePageObjects
                /src
            /AppBaseTests
                /src
    /BasePageObjects
        /src
    /BaseTests
        /src

我的设置.在Qatests中的Gradle:

rootProject.name = 'QaTests'
include 'BasePageObjects'
include 'BaseTests'
include 'Applications:AppGroupName'
include 'Applications:AppGroupName:AppBasePageObjects'
include 'Applications:AppGroupName:AppBaseTests'

我的Build.Gradle在Qatests:

version '1.0-SNAPSHOT'

allprojects {
    repositories {
        mavenCentral()
    }
}

subprojects{

    if(project.name.contains("Tests")){
        apply plugin: 'java'
        sourceCompatibility = 1.8
        dependencies {
            testCompile group: 'junit', name: 'junit', version: '4.11'
            compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '2.+'
        }

        if(project.name != "BaseTests")
        {
            println "$project.name depends on BaseTests"
            dependencies {
                testCompile project(':BaseTests')
            }
        }

        sourceSets {
            test {
                java {

                    srcDir 'src'
                }
            }
        }
    }

    if(project.name.contains("PageObjects")){
        apply plugin: 'java'
        sourceCompatibility = 1.8
        dependencies {
            compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '2.+'
        }

        if(project.name !="BasePageObjects")
        {
            dependencies {
                compile project(':BasePageObjects')
            }
        }

        sourceSets {
            main {
                java {

                    srcDir 'src'
                }
            }
        }
    }
}

我将不包括BaseTest项目的build.grade,因为在gradlew构建期间,它似乎可以很好地编译,但下面是我的appbaseTests的build.gradle:

version '1.0-SNAPSHOT'

dependencies {
    compile 'org.apache.commons:commons-lang3:3.4'
    compile project(':Applications:AppGroupName:AppBasePageObjects')
}

这里是我在实际构建中看到的第一个错误:

error: package Tests does not exist import Tests.BaseTest;

我们非常感谢任何帮助或建议。如果你想散布一些严厉的侮辱的话,我也会接受的。谢谢你。

共有1个答案

许毅
2023-03-14

我相信我在阅读这里的另一个解决方案时找到了一个答案:多项目测试依赖于gradle

看来我需要使用TestCompile project(':baseTests').sourcesets.test.output来生成命令行,并使用TestCompile project(':baseTests')来生成根build.gradle文件中的IDE功能。这似乎只是测试项目所需要的。

以下是我的root build.gradle文件中的实际更改:

    if(project.name != "BaseTests")
    {
        println "$project.name depends on BaseTests"
        dependencies {
            testCompile project(':BaseTests')
            testCompile project(':BaseTests').sourceSets.test.output
        }
    }
 类似资料:
  • 我用的是Kubuntu 18.04 每当我在Eclipse中的Gradle项目中创建一个新的JUnit测试用例,并且当我单击:Test.java->Run As->JUnit Test时,这个测试文件将转到src/Test/java Gradle项目捕获 未找到JUnit测试的消息

  • 我正在尝试使用Maven插件将我的Gradle项目转换为Maven。我遵循这个SO链接,但当我运行Gradle安装命令时,我得到了以下错误 当我执行时,它没有显示安装。在这种情况下该怎么办?

  • 我已经为公司内测发布了我的应用程序,但无法从Play商店下载。 我已打开url“https://play.google.com/apps/testing/com.*并且被接受为一名测试人员,现在它向我展示了“你是一名测试人员”。但当我点击“从Play Store下载”链接时,它会在我的测试设备Play Store中显示“未找到项目”,并在桌面浏览器中显示“未找到请求的URL”。 应用程序处于已发布

  • 写入消息窗口中。如何将常规输出路径添加到项目中?

  • 我尝试使用不同层(Web,业务,数据访问,公共)的子项目创建一个带gradle的Spring启动项目。 我按照gradle官方指南的指示创建多项目构建。 这两个子项目最初都是用Spring.io. 问题 我尝试在我的其他子项目dataAccess中使用子项目的类。导入在Intellij中运行良好。但是,当我运行时,任务失败,因为找不到: 任务:数据访问:compileJava失败。。。\dataA

  • 我在lint-gradle-api.jar中有一个错误,我在论坛上查看了其他类似的问题,但我仍然有这个问题。有人有主意吗? null 失败:生成失败,出现异常。 > 其中:构建文件“C:\users\bgbra\documents\flutter_apps\flutter_app\android\app\Build.gradle”行:25 错误:评估项目':app'时出现问题。无法解析配置“cla