2016-08-10 2 views
1

основой How to specify @category in test task in gradle?Gradle JUnit категория дополнительное testtask с различными категориями

Я хочу иметь 2 разные задачи тестирования:

  • test для быстрых тестов
  • testLongRunning для быстрого и медленных испытаний.

Я успешно изменил Buildin задачу test таким образом, что -s «SlowTest» являются onmitted:

org.namespace.some.MySlowTestClass#someReallyLongRunningTest не выполняется по желанию при выполнении задания «тест»

Мой вопрос: Можно ли добавить дополнительную задачу градиента «testLongRunning», которая выполняет все тесты (в том числе org.namespace.some.MySlowTestClass#someReallyLongRunningTest), в то время как задача «испытание» градации не выдает медленную?

Мой рабочий пример РВП скачет SlowTest выглядит следующим образом:


// subproject/build.gradle 
apply plugin: 'java' 

dependencies { 
    testCompile 'junit:junit:4.11' 
} 

test { 
    useJUnit { 
     excludeCategories 'org.junit.SlowTest' // userdefined interface in "subproject/src/test/java/org/junit/SlowTest.java" 
    } 
} 

// subproject/src/test/java/org/junit/SlowTest.java 
package org.junit; 

// @Category see https://stackoverflow.com/questions/38872369/cannot-include-exclude-junit-tests-classes-by-category-using-gradle 
public interface SlowTest { 
/* category marker for junit 
    via @Category(org.junit.SlowTest.class) */ 
} 

// subproject/src/test/org/namespace/some/MySlowTestClass.java 
package org.namespace.some; 

import org.junit.Assert; 
import org.junit.Test; 
import org.junit.runner.RunWith; 

import org.junit.experimental.categories.*; 

public class MySlowTestClass { 

    // @Category see https://stackoverflow.com/questions/38872369/cannot-include-exclude-junit-tests-classes-by-category-using-gradle 
    @Category(org.junit.SlowTest.class) 
    @Test 
    public void someReallyLongRunningTest(){ 
    } 
} 

, что я пробовал:

, когда я добавить это подпроекта/build.gradle

// this is line 65 
task testLongRunning (type: test){ 
    dependsOn test 
    useJUnit { 
     includeCategories 'org.junit.SlowTest' 
    } 
} 

я получаю эту ошибку

 
FAILURE: Build failed with an exception. 

* Where: 
Build file '...\subproject\build.gradle' line: 66 

* What went wrong: 
A problem occurred evaluating project ':subproject'. 
> org.gradle.api.tasks.testing.Test_Decorated cannot be cast to java.lang.Class 

ответ

2

Это выглядит как ваш тип может быть неправильным. Попробуйте изменить (type: test) на (type: Test). Я думаю, dependsOn test пытается найти test, вы проходите как тип, а не видите его как фактическую задачу.

1

Столкнулся с той же проблемой. Следующие работали для меня (аналогично тому, что предложил Тим ВанДорен):

test { 
    useJUnit { 
     includeCategories 'com.common.testing.UnitTest' 
    } 
} 

task integrationTest (type: Test) { // Use 'Test' instead of 'test' here 
    dependsOn test 
    useJUnit { 
     includeCategories 'com.common.testing.IntegrationTest' 
    } 
} 
Смежные вопросы