2014-08-08 2 views
1

вид каверзный вопрос на этот раз (для меня)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, если это помогает)

Я могу однако создать экземпляр myclass в TestTest, используя новый класс myclass().

Рамка, однако, может найти классы в порядке, если я копирую файлы, о которых идет речь, из src/main/java в src/test/java.

Поскольку инфраструктура ищет свою конфигурацию в пути к классам и обнаруживает, что testconfig.xml, src/test/resources явно IS на пути к классу при тестировании, объясняет, почему он работает с классами, скопированными в src/test/java.

Но новый класс myclass()! = Null и здравый смысл предполагают, что src/main/java тоже, что бы проверить, если это не так?

Я пытался добавить ЦСИ/главный путь к классам с

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

, но он не сделал ничего хорошего. Что мне здесь не хватает?

UPDATE:

Я хотел бы добавить, что 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

Не могли бы вы объяснить, почему именно ваша инфраструктура должна вводить «myclass» в тест. Если этот класс является тестируемым, мне интересно, почему его нужно вводить, так как он должен знать класс, который тестирует модульный тест. Если этот класс нужен только для проверки другого класса, вы должны подумать о том, чтобы использовать фиктивный класс (который вы помещаете в тестовую папку), поскольку вы не хотите тестировать более одного класса за один раз. –

+0

Framework - это Buisnessprocessengine (activiti), и я хочу проверить, правильно ли введены классы, если заданы переменные процесса для новых экземпляров процесса и т. Д. – billdoor

ответ

0

Мое первое предложение было бы добавить путь к классам Java/основной для тестовой пути к классам , так изменить

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

к этому:

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

Но все-таки на мой взгляд, вы не должны делать это, потому что бинарные файлы должны быть уже путь к классам испытания.

+0

Нет такого свойства: runtimeClasspath для класса: org.gradle.api.internal.file.DefaultSourceDirectorySet в java.runtimeClasspath. Я знаю, вот почему я довольно отчаянно нуждаюсь в ответе здесь – billdoor

+0

Извините, меня смутило sourceSets. Конечно, вы должны использовать вывод main. Существуют двоичные файлы ваших источников. –

Смежные вопросы