[英]Junit failed tests, how to fix this?
所以我正在尝试使用Junit,这是一个很新的东西。 我试图在一个名为SetOfUsers的类中测试方法,如下所示:
@Test
public void testFindUserByName() {
System.out.println("findUserByName");
String name = "";
SetOfUsers instance = new SetOfUsers();
User expResult = null;
User result = instance.findUserByName(name);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
}
所以我想检查在Bob中输入的用户名,例如在这个名称字符串中
String name = "Bob";
因为我在setOfUsers类中有一个名为Bob的用户。
输出窗口显示此消息
Failed: expected:<null> but was:<Staff name:Bob, Staff pass:abc123>
我该怎么做才能成为通行证?
阅读BDD ,这是一个非常好的技术,使测试易于编写和理解(阅读)
测试驱动开发是一种软件开发方法,它基本上表明对于每个软件单元,软件开发人员必须:
- 首先为单位定义一个测试集;
- 然后实施该单位;
- 最后验证单元的实现是否使测试成功。
写得好的测试应该有GivenWhenThen部分
( 给定 )一些背景
( 何时 )执行某些操作
( 然后 )应获得一组特定的可观察结果
Given-When-Then是一种表示测试的风格 - 或者正如其支持者所说 - 使用SpecificationByExample指定系统的行为。
@Test
public void testFindUserByName() {
// given
SetOfUsers instance = new SetOfUsers();
// when
User result = instance.findUserByName("Bob");
// then
assertEquals("Bob", result.getName());
}
很高兴阅读:
这个测试总是会失败,因为最后一行是
fail("The test case is a prototype.");
您的测试现在失败的原因是因为上面的行,
assertEquals(expResult, result);
您正在将预期结果设置为null,并且从名称""
获得的结果可能也是一个空字符串以及该错误消息。 您需要使expResult与您希望返回的instance.findUserByName(“Bob”)相同。 但是,除非初始化要使用用户对象设置的实例,否则对象将不匹配,因此最好是模拟它以返回预先创建的User
对象以使它们匹配,或者创建具有相同属性的User
对象如你所期望的一个要返回检查的领域User
返回的对象和User
创建的对象,以确保它们匹配。
如果要检查Bob
的用户是什么,请将代码更改为:
@Test
public void testFindUserByName() {
System.out.println("findUserByName");
String name = "Bob";
SetOfUsers instance = new SetOfUsers();
User expResult = <Create an object you expect instance.findUserByName("Bob") to return>;
User result = instance.findUserByName(name);
//Check fields here.
assertEquals(expResult.getUserName(), result,getUserName());
// TODO review the generated test code and remove the default call to fail.
}
您无法使用assertEquals()
测试null。
要测试null,请使用:
assertNull(result);
我不明白这个问题,但是如果你想搜索“Bob”为什么要初始化name =“”? 测试应该是:
@Test
public void testFindUserByName() {
//Create SetOfUsers
//Add new User with name Bob
//FindByUsername("Bob")
//AssertEqual(User.getName(), "Bob")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.