有没有办法在/ src/test/java下的类上排除Findbugs执行.我尝试了以下但它似乎不起作用.
classes = classes.filter {
!it.path.contains("**classes\\test\\org*")
}
Run Code Online (Sandbox Code Playgroud) 我在 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) 我是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) 我们的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等函数.但是我无法实现这一点.这里有什么帮助?
我有这个简单的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) 我很难让这个斑点测试发挥作用。
我有一个 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) 我有一个配置了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)