我有一个返回
Runnable
.在某些情况下,它将返回空runnable(
() -> {}
)我想测试一下这些情况是否得到了很好的尊重。
因此,我想做一些简单的单元测试,比如:
private static final Runnable EMPTY = () -> {};
@Test
public void test() {
Runnable action = myObject.myMethod(myParameters);
assertEquals(EMPTY, action);
}
显然,从那以后,上述方法就不起作用了
可运行的
是一个功能接口,我想这将取决于我来覆盖
equals
方法,否则我只调用超类中的一个
Object
因此,我的主张会失败。
一方面,我明白这很难(或者根本不可能?)测试可能包含任何内容的两个可运行项的相等性。
另一方面,我真的很想测试runnable是否为空,而不是其他。
所以现在,我创造了一个
public static final Runnable EMPTY
上
myObject
我需要时返回的类:
public class MyObject {
public static final Runnable EMPTY = () -> {};
public Runnable myMethod(MyParameters myParameters) {
if (something) {
return EMPTY;
}
//...
if (somethingElse) {
return EMPTY;
}
//...
return anotherRunnable;
}
}
然后我从测试中引用了这个实例,它适用于有限数量的测试:
assertEquals(MyObject.EMPTY, action);
但是
可运行的
可能有一天也会从外部提供,这意味着我无法控制空runnable正是我的静态空实例这一事实,在这种情况下,我真的需要知道提供的runnable是否为空。
知道吗?我是在要求一些不可能的事情吗?