我有一个以ArrayList作为参数的类:
public class Foo {
private ArrayList<Bar> bars;
public Foo(ArrayList barList) {
bars = barList;
}
}
我可以将任何ArrayList传递给构造函数中的错误:
// should compile error with this line
Foo foo = new Foo(new ArrayList<String>());
问题是如果我将这个案例添加到测试套件中,当bug修复时,我无法编译它。 无论如何都要测试这个案子吗?
答案 0 :(得分:2)
我不知道任何语言/单元测试框架会让你“测试”不应该编译的代码。如果你无法编译它,没有什么可以测试的。但是,您可以在构建时打开所有编译器警告。我非常确定在JDK5之后传递一个非参数集合是一个很大的警告。
答案 1 :(得分:1)
我认为这是不好的做法而且我并没有真正看到它的用途,但请参阅此示例以了解如何测试编译错误:
ArrayBuffer
编辑: 1)我不确定这可能与maven等构建工具一起发挥作用。据我所知,maven在编译错误时打破了构建,因此可能甚至不会执行测试。
答案 2 :(得分:0)
修复方法签名:
public Foo(ArrayList<Bar> barList) {
bars = barList;
}
问题解决了。 (您可能还想检查null。)