我正在创建一个测试类,当我将模拟对象的某些方法存根以返回True时,当调用另一个判断已存根的方法时,其结果将被忽略.
以下是测试方法:
@Test
public void AddExistingUser(){
//Mocking
mockedManager = mock(UserManager.class);
//Stubbing
when(mockedManager.checkUsername("test")).thenReturn(true);
assertThrows(IllegalArgumentException.class, () -> {
mockedManager.addUser("test", "test");
});
}
这是UserManager.addUser:
public void addUser(String username, String password) {
//Check if the user already exists.
if (checkUsername(username)) {
throw new IllegalArgumentException("User already exists.");
}
usersData.put(username, hashPassword(password));
file.writeString(json.toJson(usersData), false);
}
这是UserManager.check Username,以防需要:
public boolean checkUsername(String username) {
return usersData.containsKey(username);
}
(其中,usersData是一个对象映射字符串、字符串和gt;)
我预计测试会成功,因为它应该返回一个IllegalArgumentException,但是我得到了"org.opentest4j.AssertionFailedError:期望抛出java.lang.IllegalArgumentException,但没有抛出任何东西".