Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用gradle的自定义JUnit测试检测_Java_Junit_Gradle - Fatal编程技术网

Java 使用gradle的自定义JUnit测试检测

Java 使用gradle的自定义JUnit测试检测,java,junit,gradle,Java,Junit,Gradle,我们的测试套件正在快速增长,我们已经达到了一个更具功能性的测试依赖于其他系统的程度 我们使用gradle测试任务来运行这些使用include和exclude过滤器的测试,但是这会变得很麻烦,因为我们必须以特定的方式命名我们的测试 我们目前的方法是以以下方式命名我们的测试: class AppleSingleServiceTest {} class BananaMultiServiceTest {} class KiwiIntegrationTest {} 然后在相关任务中使用 include

我们的测试套件正在快速增长,我们已经达到了一个更具功能性的测试依赖于其他系统的程度

我们使用gradle测试任务来运行这些使用include和exclude过滤器的测试,但是这会变得很麻烦,因为我们必须以特定的方式命名我们的测试

我们目前的方法是以以下方式命名我们的测试:

class AppleSingleServiceTest {}
class BananaMultiServiceTest {}
class KiwiIntegrationTest {}
然后在相关任务中使用

include '**/*SingleServiceTest.class'
include '**/*MultiServiceTest.class'
include '**/*IntegrationTest.class'
可以通过查看注释在gradle中找到测试类吗?

@SingleServiceTest
public class AppleTest {}
我认为任何没有注释的测试都将作为正常的单元测试运行,所以如果您忘记注释一个更具功能性的测试,它将失败

单一服务测试的一个例子是selenium测试,其中SUT的任何外部依赖项都是存根的


多服务测试的一个例子是,一些但可能不是所有的外部依赖项没有存根

您请求的功能当前不存在,但您可以在以下位置发出功能请求。或者,您可以使用(繁琐的)JUnit
@Category
,这要求您定义测试套件。

从开始,Gradle支持使用JUnit
@Category
选择测试,如下所示:

test {
    useJUnit {
        includeCategories 'org.gradle.junit.CategoryA'
        excludeCategories 'org.gradle.junit.CategoryB'
    }
}

更多细节可以在中找到。

我也需要用注释过滤测试。我最终设法创造了一个解决方案。它已发布。

虽然这不是您想要的,但我认为可以通过在不同的文件夹中放置不同类型的测试来解决此问题。我们就是这样做的。JUnit支持使用。这很简单,但您可能能够解决一些问题。
@Category
旨在与JUnit套件一起使用。(是的,我知道这很麻烦)。据我所知,JUnit不提供任何其他按类别过滤的方法。当然,Gradle可以实现自己的基于注释的过滤方法,类似于Maven所做的。@David这是一种可能性,我们可能会尝试;我的偏好是用一些元信息(注释)指出它是什么类型的测试,并将测试的位置留给开发人员(我们目前使用maven风格的项目结构)@PeterNiederwieser也许一个定制的gradle插件可以做到这一点?这是我一直在思考的问题,但我会从头开始,不知道目前我想要实现的目标是否可行。最好是增强
测试任务执行的类文件扫描,而不是从头开始开发新的解决方案。回答问题并提供替代方案(和@DavidParsson一样)投票赞成!