小编MFI*_*san的帖子

Gradle - 如何在/ src/test/java上排除Findbugs

有没有办法在/ src/test/java下的类上排除Findbugs执行.我尝试了以下但它似乎不起作用.

classes = classes.filter {
   !it.path.contains("**classes\\test\\org*")
}
Run Code Online (Sandbox Code Playgroud)

findbugs gradle

9
推荐指数
1
解决办法
4507
查看次数

使用并行流时,Spock 单元测试卡住

我在 Spock 单元测试中对 Java 8 并行流有一个奇怪的行为。

以下代码采用 的列表PlanConfigConstraintValidator并验证是否全部返回true

下面给出了 Spock 中这段代码的单元测试。一切正常,直到我添加.parallel(). 使用并行流时,单元测试卡住,永不停止。

如果我只返回 one Mock(PlanConfigConstraintValidator),它会起作用,但当大小大于 1 时则不起作用。

我也在底部提供了线程转储。

@Override
public boolean isValid(PlanConfig planConfig, ConstraintValidatorContext context) {
    return getPlanConfigConstraintValidators().stream().parallel()
            .filter(validator -> shouldValidate(planConfig, validator))
            .allMatch(validator -> isValid(planConfig, context, validator));
}
Run Code Online (Sandbox Code Playgroud)

这是单元测试代码

def "isValid - all validators return true"() {
    when:
    def validator = Spy(PlanConfigValidator) {
        getPlanConfigConstraintValidators() >> [
                Mock(PlanConfigConstraintValidator),
                Mock(PlanConfigConstraintValidator),
        ]
        shouldValidate(_, _) >> true
        isValid(_, _, _) >> true
    }
    def result = validator.isValid(new …
Run Code Online (Sandbox Code Playgroud)

multithreading unit-testing spock java-8

5
推荐指数
1
解决办法
1480
查看次数

如何在Gradle JAXB / XJC中编译多个xsd文件?

我是Gradle的新手,在尝试使用Gradle Ant XJC编译多个架构文件时遇到了一些问题。

使用下面的代码,我能够成功编译1个架构。但是,我不确定如何对多个架构文件执行相同的操作。

有什么建议吗?

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Task : XJC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
final def packageName = "org.test.webservice.domain"
final def schemaFile = "misc/resources/schemas/employee-v3/wadl/employee.xsd"

configurations { provided }
project.ext.generatedSrcDir = file("$buildDir/generated-src")
dependencies {
    provided 'com.sun.xml.bind:jaxb-impl:2.2.6'
    provided 'com.sun.xml.bind:jaxb-xjc:2.2.6'
}
task jaxb {
    println 'Starting JAXB XJC...'
    ext {
        packagePath = packageName.replaceAll("\\.", "/")
        srcFile = file(schemaFile)
        destDir = new File(project.ext.generatedSrcDir, packagePath)
    }

    inputs.file srcFile
    outputs.dir destDir
    project.ext.generatedSrcDir.mkdirs()
    ant.taskdef(name: 'xjc',
            classname: 'com.sun.tools.xjc.XJCTask',
            classpath: configurations.provided.asPath)

    doLast {
        project.ext.generatedSrcDir.mkdirs()
        ant.xjc(schema: srcFile, package: packageName,
                destdir: project.ext.generatedSrcDir)
    }

    task generateSources() …
Run Code Online (Sandbox Code Playgroud)

ant schema jaxb xjc gradle

4
推荐指数
1
解决办法
2万
查看次数

在Oracle SQL中,如何使用多值列连接表

我们的Oracle数据库中有一个遗留表,它有一个以逗号分隔值的列.这些以逗号分隔的值实际上是另一个表的外键.

Table: SCHEDULE
-----------------------
ID    NAME     DATES
--    ----     -----
1     Test1    10,20,30
2     Test2    20,40

Table: DATES
-----------------------
ID    DATE
--    ----
10    2013-01-01
20    2013-02-02
30    2013-03-03
40    2013-04-04
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个返回结果的查询:

ID   NAME   DATE
--   ----   ----
1    Test1  2013-01-01
1    Test1  2013-02-02
1    Test1  2013-03-03
2    Test2  2013-02-02
2    Test2  2013-04-04
Run Code Online (Sandbox Code Playgroud)

我遇到了DBMS_UTILITY.comma_to_table过程,以及REGEXP_SUBSTR,SPLIT,JOIN等函数.但是我无法实现这一点.这里有什么帮助?

sql oracle

3
推荐指数
1
解决办法
989
查看次数

如何在Groovy中将SQL结果集转换为JSON?

我有这个简单的Groovy脚本将SQL结果集导出到JSON.虽然下面的一个有用,但它不是我想要的格式.请帮忙吗?

def resultset = Sql.newInstance(...).rows('select * from client')
println new JsonBuilder(resultset).toPrettyString()
Run Code Online (Sandbox Code Playgroud)

上面的代码打印

  [
      {
        "ID":1,
        "NAME: "ABC"
      },
      {
        "ID":2,
        "NAME: "XYZ"
      },
      {
        "ID":3,
        "NAME: "MSFT"
    }
]
Run Code Online (Sandbox Code Playgroud)

预期产出

{
    "clients": [
        {
            "ID": 1,
            "NAME": "ABC"
        },
        {
            "ID": 2,
            "NAME": "XYZ"
        },
        {
            "ID": 3,
            "NAME": "MSFT"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

sql groovy json

2
推荐指数
1
解决办法
3406
查看次数

Spock - 如何检查 Spy 对象上的方法调用计数?

我很难让这个斑点测试发挥作用。

我有一个 Spring repo/DAO 类,它多次调用存储过程。我正在尝试编写一个单元测试来验证 SP 是否被调用“x”次(3 次调用 createSP() 方法)。

public class PlanConditionRepositoryImpl{

    ....

    public void write() {
        for (int i=0; i<3; i++) {
            createSP(new ConditionGroup(), new Condition()).call();
        }
    }

    protected StoredProcedure<Void> createSP(ConditionGroup planConditionGroup, Condition planCondition) {
        return new StoredProcedure<Void>()
                .jdbcTemplate(getJdbcTemplate())
                .schemaName(SCHEMA_NAME);
    }
}       
Run Code Online (Sandbox Code Playgroud)

然而,下面的实现并没有这样做。如何实现调用计数检查?或者如何避免调用createSP()方法的实际实现。

def write(){
    def repo = Spy(PlanConditionRepositoryImpl){
        createSP(_, _) >> Spy(StoredProcedure){
            call() >> {
                //do nothing
            }
        }
    }
    when:
    repo.write()

    then:
    3 * repo.createSP(_, _)
}
Run Code Online (Sandbox Code Playgroud)

这就是我使用 hack 解决它的方法。但是有没有一种解决方案可以使用 Spock 的基于交互的测试而不引入额外的变量呢?

def "spec"() …
Run Code Online (Sandbox Code Playgroud)

unit-testing spock

2
推荐指数
1
解决办法
1万
查看次数

Jacoco在我的Gradle项目中没有显示Spock代码覆盖率

我有一个配置了jacoco插件的Gradle项目来报告测试代码的覆盖范围.我的单元测试是用Spock框架编写的.

虽然Jacoco插件生成HTML报告,但它会将所有类的代码覆盖率报告为0%.

我google了很多,找不到我想念的东西.有没有人使用Gradle + Jacoco进行Spock代码覆盖?

apply plugin: "jacoco"
apply plugin: "groovy"

sourceSets {
    main {
        java { srcDirs = ['src/main/java'] }
        groovy {srcDirs = ['src/main/groovy'] }
        resources { srcDir 'src/main/resources' }
    }

    test {
        java { srcDirs = ['src/test/java'] }
        groovy { srcDirs = ['src/test/groovy'] }
        resources { srcDir 'src/test/resources' }
    }
}

test {
    jvmArgs '-Xms64m', '-Xmx2G', '-XX:MaxPermSize=128m'
}

jacocoTestReport {
    reports {
        xml.enabled false
        csv.enabled false
        html.destination "${buildDir}/jacocoHtml"
    }
}

dependencies {
    testCompile "org.spockframework:spock-core:0.7-groovy-2.0"
    testCompile "org.spockframework:spock-spring:0.7-groovy-2.0"
}
Run Code Online (Sandbox Code Playgroud)

unit-testing code-coverage gradle spock jacoco

0
推荐指数
1
解决办法
4755
查看次数