Mockito 的 anyString(), any(Foo.class) 等不能匹配 null 值

原文转载自 「隔叶黄莺 Yanbin Blog」 ( https://yanbin.blog/mockito-anystring-anyfoo-class-cannot-match-null-values/ ) By Yanbin

预计阅读时间 0 分钟(共 0 个字, 0 张图片, 0 个链接)

使用 Mockito Mock 方法式,一直以为可以用 anyString(), any(Foo.class) 等匹配 null 值,其实不行,null 值必须显式的用 null, 或 eq(null) 来匹配。anyString(), anyInt() 等只能匹配非 null 值,查看它们的返回值实际是 "" 和 0 等, 而更为特别的是 any(Foo.class) 看到的是 null, 仍然不能匹配 null 值。进一步用 Mockito.mockingDetails(mock).printInvocations() 打印出的内容,anyString(), any(Foo.class) 都会显示为 null 值。 说的有点罗嗦,看下面的例子, 被测试类 UserDao,sql 和 sqlArguments 由各自的 setter 方法来控制,默认它们都为 null [crayon-5ef3022971563184520163/] 来它的测试类 UserDaoTest [crayon-5ef3022971572057868331/] 测试不成功,输出信息为 java.lang.AssertionError: Expected size:<2> but was:<0> in: <[]> […]
more_vert