public class Room extends java.lang.Object implements java.io.Serializable {
public String description;
public Map<String, Room> map;
public List<Thing> things;
//Room
//Parameters:
//desc - Description for the room Note: any newlines in desc will be
replaced with *
public Room(java.lang.String desc){
this.description = desc;
}
//getDescription
//A description of the room
//Returns:
//Description
public java.lang.String getDescription(){
return description;
}
//replaceLine
//any new line in s will be replaced with *
public String replaceLine(String s){
return s.replace("\n", "*");
}
//setDescription
//Change Room description Note: any newlines in s will be
//replaced with *
//Parameters:
//s - new Description
public void setDescription(java.lang.String s){
this.description = replaceLine(s);
}
}
我正在尝试为最后一个方法编写一个Junit测试:
@Test
public void setDescription(java.lang.String s) {
String input = "abc\n";
String expected = "abc";
setDescription(input);
assertEquals(expected, input);
}
我知道这不正确,但我不知道如何解决它。我对Java和整个编码都很陌生。有人可以帮我这个吗?
答案 0 :(得分:1)
让我们假设您已为测试类创建了一个Room实例。
...
Room room = new Room("test room");
...
@Test
public void testSetDescription() {
assertEquals("abc", room.setDescription("abc"));
assertEquals("abc*", room.setDescription("abc\n"));
}
您可以根据自己的期望添加更多此类断言。 setDescription如何处理空字符串或空输入;所有这些用例都可以在您的UT中声明。
顺便说一下,你不必显式扩展Object。每个类都直接或间接地通过继承隐式地从Object扩展。您也不必使用java.lang包中任何内容的完全限定名称。它们是隐式导入的。此外,如果replaceLine
应该是公共API的一部分,您可能需要为其添加类似的单元测试用例,例如public void testReplaceLine() {...}
。欢迎来到Java编程!
答案 1 :(得分:1)
这是你的测试:
@Test
public void testSetDescription() {
Room instance = new Room("test");
instance.setDescription("abc\n");
assertEquals("abc*", instance.getDescription());
}
assertEquals
方法已开发,可以多种方式使用。在这种情况下,我们首先将期望值设置在第二位,即对象的实际数据(实际数据)。但在现实生活中,最有用的测试是只检查单个方法的测试,但在您的情况下,您需要一个方法,但实际上测试其他方法。在实际项目中,你不应该测试getter和setter。只有业务逻辑,因为如果您测试每种方法,您将有更多时间使用主代码。
答案 2 :(得分:-1)
我没有遇到问题。你可以发布错误吗?
在第一堂课中,replaced with *
位于评论栏之外,您必须将//
放在该句子之前
单元测试没有测试你的Room
课程,你必须做这样的事情:
@Test
public void testDescription(java.lang.String s) {
String input = "abc\n";
String expected = "abc";
//create your Room instance
Room myRoom = new Room(input);//why using a constructor with description if you set the description after?
//set the description in your Room instance
myRoom.setDescription(input);
//test your set-get Description against your expected result
assertEquals(expected, myRoom.getDescription());
}