一直在使用Spock,并且非常喜欢在输入/输出场景的测试中使用表的能力。
来自spock docs的例子:class Math extends Specification {
def "maximum of two numbers"(int a, int b, int c) {
expect:
Math.max(a, b) == c
where:
a | b | c
1 | 3 | 3
7 | 4 | 4
0 | 0 | 0
}
}
我在金融行业工作,处理大量交易“书籍”。
以表格形式表示这些书籍会很棒。
所以不要使用构建器,例如:
builder.addQuote( 1000000, 1.1220, 1.2230)
.addQuote( 2000000, 1.1219, 1.2233)
.addQuote(10000000, 1.1217, 1.2234)
.addQuote(15000000, 1.1216, 1.2240)
使用某种表格会很棒:
List<Quote> quotes = new ArrayList<Quote>();
MyUtil.insertInto(quotes).fromTable{
quantity | bid | ask
1000000 | 1.1220 | 1.2230
2000000 | 1.1219 | 1.2233
10000000 | 1.1217 | 1.2234
15000000 | 1.1216 | 1.2240
}
已经看到有人采取某种方式执行此操作here,但该示例将结果分配给一般的“行”对象。
使用第一行中的字段名称,有一个将行值写入给定域对象的实用程序会很棒。
答案 0 :(得分:1)
以下是使用Groovy DSL的方法:http://tux2323.blogspot.com/2013/04/simple-table-dsl-in-groovy.html
使用链接中的示例
List<Row> rows = TableParser.asListOfRows {
quantity | bid | ask
1000000 | 1.1220 | 1.2230
2000000 | 1.1219 | 1.2233
10000000 | 1.1217 | 1.2234
15000000 | 1.1216 | 1.2240
}
您可以使用自定义逻辑将Row
转换为Quote
答案 1 :(得分:1)
我已经编写了一个解决我自己问题的API。
它被称为GroovyTables。位于:https://github.com/tools4j/groovy-tables
它可用于填充键入的对象列表。例如
List<Quote> quotes = GroovyTables.createListOf(Quote).fromTable {
symbol | price | quantity
"AUD/USD" | 1.0023 | 1200000
"AUD/USD" | 1.0024 | 1400000
"AUD/USD" | 1.0026 | 2000000
"AUD/USD" | 1.0029 | 5000000
}