Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试CloseableIterator接口_Java_Tdd - Fatal编程技术网

Java 测试CloseableIterator接口

Java 测试CloseableIterator接口,java,tdd,Java,Tdd,测试以下接口的一些方法是什么: interface CloseableIterator<T> extends Iterator<T>, AutoCloseable { } 接口可关闭迭代器扩展迭代器,可自动关闭{ } 谢谢 编辑 我想知道以下测试是否有益: @Test void anonymousImplementation() { new CloseableIterator<String>() {

测试以下接口的一些方法是什么:

interface CloseableIterator<T> extends Iterator<T>, AutoCloseable {

}
接口可关闭迭代器扩展迭代器,可自动关闭{
}
谢谢

编辑

我想知道以下测试是否有益:

    @Test
    void anonymousImplementation() {
        new CloseableIterator<String>() {
            @Override
            public void close() throws Exception {
                throw new Exception();
            }
            @Override
            public boolean hasNext() {
                return false;
            }
            @Override
            public String next() {
                return null;
            }
        };
    }
@测试
void匿名实现(){
新的closeable迭代器(){
@凌驾
public void close()引发异常{
抛出新异常();
}
@凌驾
公共布尔hasNext(){
返回false;
}
@凌驾
公共字符串next(){
返回null;
}
};
}

然后,如果出于任何原因,
AutoCloseable
CloseableIterator
中删除,或者泛型类型更改为,例如,
T extends Number
,它将给我编译错误。不是真正的“测试”,但确保至少存在一个实现,以确保方法正确,并且泛型类型有效。

正如现在编写的,您的接口不包含任何代码(也称为行为)

因此,没有什么可测试的

换句话说:此时,没有理由在这里编写单元测试。编写一个只测试接口的实现,只是为了测试该接口是否正确,而该接口是多余的。在这里,你永远也抓不到任何一种虫子

意思:如果您的接口使用错误,编译器会让您知道


记住:编写单元测试不是因为你可以。你写它们是因为它们对你的工作有贡献。如前所述,至少对于这里给定的接口,单元测试没有贡献有意义的值

根本没有代码,您可以测试什么?也许可以编写一个测试,确保界面包含
close
hasNext
next
?如果你有一个泛型接口,你可以用显式类型构造匿名类,比如
newinterface
。如果随后将接口更改为
接口接口
,则会出现错误您的回答非常充分。不知道你还能补充什么。