我已经写过单元测试 - junit与Mockito库来测试任何方法,他们将数据库保存到新帐户 - addNewAccount
方法。
我想问 - 如果我需要添加一个方法或者什么以及如何 - 删除/删除一个帐户,添加了谁。请告诉我我能做什么。
我的单元测试是:
@Test
public void shouldSaveaAccountToDb() {
Account acc = new Account();
acc.setUser(this.user);
acc.setEmail(this.mail);
String account = this.accountController.addNewAccount(this.user, this.mail);
verify(this.accountRepepetytory)).save(Mockito.refEq(acc, new String[0]));
Assert.assertThat(account, CoreMatchers.is("Account"));
}
我还想添加一个带空值的case并测试null和空字符串。如果您有任何想法添加测试用例请告诉我。
非常感谢你的帮助。我改进了我的考试。 我还有一个使用null值进行测试的方法。这是方法。
@Test
public void SaveToDatabaseWithNull() {
Account acc = new Account();
String mail = null;
user.setMail((String)mail);
user.setUser(this.user);
String account = this.accountController.addNewAccount(this.user, (String)mail);
verify(this.accountRepetytory)).save(Mockito.refEq(uaccount, new String[0]));
Assert.assertThataccountCoreMatchers.is("Account"));
}
我还想问一下,在这些测试中是否有必要删除一些值,添加一个删除帐户的方法。如果我在一个方法中创建一个帐户,我是否必须以某种方式删除它?在后面的方法中使用null值正确测试。
答案 0 :(得分:1)
在你的代码中,你有一些弱点会让你测试英语并且难以理解:
您的测试会验证两件事:
代码创建了一个类Account
的对象,该对象等于通过Account
equals()
类的"Account"
类实现在测试方法中创建的对象。
该方法的返回值是一个内容为Mockito.refEq()
的字符串
问题是测试没有解释为什么你期望那个字符串。
所以基本上你应该有单独的方法来验证这两种行为,以便更好地描述测试方法名称中测试的行为。
equals
依赖于Account
类中null
方法的(正确)实现。如果一个帐户获得了不允许ArgumentCaptor
的更多属性,那么这个方法实际上没有实施或者(甚至更糟)可能需要额外的配置。
更好的方法是使用@Test
public void shouldPassAnAccountObjectWithNameAndEmailSetToDB() {
ArgumentCaptor<Account> accountCaptor =
ArgumentCaptor.forClass(
Account.class);
this.accountController.addNewAccount(
this.user,
this.mail);
verify(this.accountRepepetytory))
.save(
accountCaptor.capture());
Assert.assertThat(
"user",
accountCaptor.getValue().getUser(),
CoreMatchers.is(this.user));
Assert.assertThat(
"email",
accountCaptor.getValue().getEmail(),
CoreMatchers.is(this.email));
}
并验证捕获对象的属性:
import webbrowser
url = "<your-local-Ip-address>:8080/"