【发布时间】:2018-11-04 06:36:47
【问题描述】:
我正在学习参数化 Junit 测试用例,我正在尝试通过 Id 获取用户。执行此操作时出现错误: “Java.lang.IllegelArgumentException:参数数量错误。” 请告诉我这段代码有什么问题。
@RunWith(Parameterized.class)
public class UserTestCases {
@Mock
UserRepository userRepository;
@InjectMocks
private UserServiceImpl userService;
private User user;
private User expectedUser;
public UserTestCases(User user, User expectedUser) {
super();
this.user = user;
this.expectedUser = expectedUser;
}
@Parameters
public static Collection input() {
User u1=new User(1, "india", "shiva");
User u2=new User(2, "india", "shiva");
User u3=new User(3, "india", "shiva");
return Arrays.asList(new Object[][] {{new User(1L, "india", "shiva"), u1}, {new User(2, "india", "shiva"), u2},{new User(3, "india", "shiva"), u3}});
}
@Test
public void getUserByIdtest() {
when(userRepository.findOne(user.getId())).thenReturn(user);
User result=userService.findById(user.getId());
assertEquals(user.getCountry(), expectedUser.getCountry());
assertEquals(user.getName(), expectedUser.getName());
}
}
提前致谢
【问题讨论】:
-
你能告诉我这段代码有什么问题吗
-
你的测试需要两个参数:user和expectedUser。您的参数集合包含用户,而不是成对的用户。阅读文档。您的用例类似。
-
请检查更新的代码,现在得到 NullPointerException。
-
参数化运行器不处理 Mock 和 InjectMocks 注释。阅读 Mockito 文档以了解如何处理这些注释。 static.javadoc.io/org.mockito/mockito-core/2.23.0/org/mockito/…
标签: junit parameterized