我有以下设置:
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的类。
但是新的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'
}
答案 0 :(得分:0)
我的第一个建议是将java / main的类路径添加到测试类路径中。所以改变这个
sourceSets.test.runtimeClasspath += files(sourceSets.main.java.srcDirs)
到此:
sourceSets.test.runtimeClasspath += files(sourceSets.main.output)
但在我看来你不应该这样做,因为二进制文件应该已经是测试的类路径了。