java ArgumentCaptor正在忽略类类型

pieyvz9o  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(112)

我在一个测试中使用了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);

有人知道为什么会发生这种情况吗?更重要的是,为什么我们在不同的机器之间会得到不同的行为?

ar7v8xwq

ar7v8xwq1#

不幸的是,ArgumentCaptor中没有类型检查:
这个实用类 * 不做任何类型检查 *,泛型签名只是为了避免在代码中强制转换。

相关问题