【发布时间】:2015-08-18 14:41:41
【问题描述】:
我在这里抽象了一个非常简单的情况,我想将一个字符串列表传递给我的cleanLines 函数并返回一个字符串列表。不幸的是,我是 Groovy 的新手,我花了大约一天的时间试图让它工作但无济于事。这是一个显示我遇到的问题的独立测试:
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
class ConfigFileTest {
private def tab = '\t'
private def returnCarriage = '\r'
private def equals = '='
List <String> cleanLines(List <String> lines) {
lines = lines.collect(){it.findAll(){c -> c != tab && c != returnCarriage}}
lines = lines.findAll(){it.contains(equals)}
lines = lines.collect{it.trim()}
}
@Test
public void test() {
List <String> dirtyLines = [" Colour=Red",
"Shape=Square "]
List <String> cleanedLines = ["Colour=Red",
"Shape=Square"]
assert cleanLines(dirtyLines) == cleanedLine
}
}
我相信我遵循了collect()、findAll() 和trim() 的正确用法。但是当我运行测试时,它会在trim() 行中崩溃,说明
groovy.lang.MissingMethodException:没有方法签名: java.util.ArrayList.trim() 适用于参数类型:() 值:[]
。有点可疑。
我已经盯着这个太久了,注意到我的 IDE 认为我在 cleanLines 函数中的第一个 lines 的类型是 List<String>,但是到第二行它的类型是 Collection到第三个它需要类型List<Object<E>>。我认为 String 是一个对象,所以这可能没问题,但它肯定暗示了我的误解。我究竟做错了什么?我怎样才能让我的测试在这里通过?
【问题讨论】:
标签: list collections groovy