我在一个测试中使用了ArgumentCaptor,但是传入参数捕获的类与实际捕获的类不同,行为非常不一致,在一些机器上它会抛出异常(我希望它这样做),而在另一些机器上它只是捕获对象并继续。
下面是一个例子,ClassOne被传递到ArgumentCaptor,但是ClassTwo的一个示例被捕获。ClassOne和ClassTwo是完全独立的,没有任何东西扩展另一个:
ClassTwo expected = ClassTwo.builder().build();
ArgumentCaptor<ClassOne> captor = ArgumentCaptor.forClass(ClassOne.class);
verify(subject).send(argumentCaptor.capture());
assertThat(captor.getValue()).usingRecursiveComparison().isEqualTo(expected);
有人知道为什么会发生这种情况吗?更重要的是,为什么我们在不同的机器之间会得到不同的行为?
1条答案
按热度按时间ar7v8xwq1#
不幸的是,
ArgumentCaptor
中没有类型检查:这个实用类 * 不做任何类型检查 *,泛型签名只是为了避免在代码中强制转换。