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
。如果随后将接口更改为接口接口
,则会出现错误您的回答非常充分。不知道你还能补充什么。