gradle,activiti,在测试中找不到的类

时间:2014-08-08 06:38:42

标签: java spring gradle activiti

这次有点棘手的问题(对我而言)

我有以下设置:

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'
}

1 个答案:

答案 0 :(得分:0)

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

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

到此:

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

但在我看来你不应该这样做,因为二进制文件应该已经是测试的类路径了。