gpt4 book ai didi

java - 测试中未找到 gradle、activiti 和类

转载 作者:太空宇宙 更新时间:2023-11-04 14:39:00 26 4
gpt4 key购买 nike

这次有点棘手的问题(对我来说)

我有以下设置:

src
---main
---java
---com.company.myclass.java
---test
---java
---com.test.company.myClassTest.java
---com.test.company.Testtest.java
---resources
-testconfig.xml
build
---classes
--- 'compiled classfiles in correct structure'

到目前为止还很基础。

事情是:

在 testconfig.xml 中我有一些标签,例如:

<element class="com.company.myclass" />

并且需要这个的框架(activiti)找不到类(ClassNotFoundException)。 (它内部使用 Spring 进行 DI,如果有帮助的话)

但是我可以使用 new myclass() 在 TestTest 中实例化 myclass。

但是,如果我将有问题的文件从 src/main/java 复制到 src/test/java,框架就可以找到类。

当框架在类路径上查找其配置时,它会找到 testconfig.xml,测试时 src/test/resources 显然位于类路径上,解释了为什么它可以与复制到 src/test/java 的类一起使用。

但是 new myclass() != null 和常识表明 src/main/java 也是如此,如果不是,我会测试什么?

我尝试使用

将 src/main 添加到类路径中
sourceSets.test.runtimeClasspath += files(sourceSets.main.java.srcDirs) 

但这并没有起到任何作用。我在这里缺少什么?

更新:

我应该补充一点,activitiengine 在测试类中实例化,并且它需要的类需要与创建引擎位于“相同的类路径”上。我不知道这是否有帮助

感谢和问候,

附上我的build.gradle:

apply plugin: 'java'
apply plugin: 'eclipse'

sourceCompatibility = 1.8
version = '1.0'
def activitiversion = '5.14'
def bpmndir = 'src/main/resources/bpmn/'


sourceSets {
main {
resources {
exclude '**/*.bpmn'
}
}
}

sourceSets.test.runtimeClasspath += files(sourceSets.main.java.srcDirs)

task renameBPMN(type: Copy) {
outputs.upToDateWhen { false }
from(bpmndir)
into(bpmndir)
include ('**/*.bpmn')
rename ('(^.*)\\.(bpmn)$', '$1.bpmn20.xml')
}

compileJava.dependsOn renameBPMN

repositories {
maven {
url "http://10.95.17.191:9080/nexus/content/repositories/central"
}
maven {
url "http://10.95.17.191:9080/nexus/content/repositories/repo.maven.apache.org/"
}
}

dependencies {
compile group: 'org.activiti', name: 'activiti-engine', version: activitiversion
testCompile group: 'com.h2database', name: 'h2', version: '1.3.168'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.2'
compile group: 'org.slf4j', name: 'slf4j-jdk14', version: '1.7.2'
testCompile group: 'junit', name: 'junit', version: '4.11'
}

最佳答案

我的第一个建议是将 java/main 的类路径添加到您的测试类路径中。所以改变这个

sourceSets.test.runtimeClasspath += files(sourceSets.main.java.srcDirs)

对此:

sourceSets.test.runtimeClasspath += files(sourceSets.main.output)

但我仍然认为您不需要这样做,因为二进制文件应该已经是测试的类路径。

关于java - 测试中未找到 gradle、activiti 和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25197356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com