如何对会导致编译错误的代码进行单元测试

wei*_*lin 6 java junit unit-testing

我有一个以 ArrayList 作为参数的类:

public class Foo {
    private ArrayList<Bar> bars;

    public Foo(ArrayList barList) {
        bars = barList;
    }
}
Run Code Online (Sandbox Code Playgroud)

有一个错误,我可以将任何 ArrayList 传递到构造函数中:

// should compile error with this line
Foo foo = new Foo(new ArrayList<String>());
Run Code Online (Sandbox Code Playgroud)

问题是如果我将这种情况添加到测试套件中,当错误修复后,我无法编译它。有没有办法测试这个案例?

Gio*_*tta 3

我不知道有任何语言/单元测试框架可以让您“测试”不应编译的代码。如果无法编译,就没有什么可测试的。但是,您可以在构建时打开所有编译器警告。我非常确定在 JDK5 之后的任何 JVM 中传递未参数化的集合都是一个很大的警告。