我为Person
类编写了一个代码,并在该类中创建了一个构造函数Person
和参数name
。现在我必须创建这个类的实例,为该人的名字提供一个getter,并且还创建一个这个类的实例,它将响应一个接受一个参数的greet
方法:message。
当消息是" Hello" 时,问候必须返回:
嗨,我是{{name}}
当消息是" Goodbye" 时,问候必须返回:
再见
当消息为其他任何内容时,greet
将返回提供该消息的消息。我有一个经过测试的案例代码,但我坚持使用assertEquals()
函数和getter函数。现在我遇到了assertfunction
的错误。任何人都可以告诉我assertfucntion
和getter是如何工作的?我已经在我的代码中实现了getter,我不知道我是否做得对。
这是我的代码:
class Person
{
private String name;
Person(String n)
{
n = name;
}
String GetName()
{
return this.name;
}
public void greet(String t)
{
if (t == "Hello")
{
System.out.println("Hi my name is "+name);
}
else if (t == "Goodbye")
{
System.out.println("bye");
}
else
System.out.println("Hi, my name is"+name);
}
}
测试代码:
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.Before;
public class TestPerson {
private Person jeff;
private Person susy;
@Before
public void setup() {
jeff = new Person("Jeff");
susy = new Person("Susy");
}
@Test
public void testGetName() {
assertEquals("Jeff", jeff.GetName());
}
@Test
public void testGreetHelloJeff() {
assertEquals("Hi, I'm Jeff", jeff.greet("Hello"));
}
@Test
public void testGreetHelloSusy() {
assertEquals("Hi, I'm Susy", susy.greet("Hello"));
}
@Test
public void testGreetGoodbye() {
assertEquals("Bye", jeff.greet("Goodbye"));
}
@Test
public void testGreetOther() {
assertEquals("Yo", jeff.greet("Yo"));
}
}
答案 0 :(得分:3)
您无法比较String
和返回void
的方法的返回值。
你的人类是奇怪的。你把它与System.out紧密联系在一起,这是没用的。
对于如此小的样本量,您的代码存在很多问题。以下是我的建议:
public class Person {
private String name;
Person(String n) {
this.name = n;
}
String getName() {
return this.name;
}
public String greet(String t) {
if ("Hello".equals(t)) {
return String.format("Hi my name is %s", name);
} else if ("Goodbye".equals(t)) {
return "bye";
} else {
return String.format("Hi, my name is %s", name);
}
}
}
答案 1 :(得分:1)
看你的方法返回void:
public void greet(String t)
你如何期望得到并断言虚数值?
将void更改为String并返回消息字符串。 也不要使用==而不是.equals(..)
“Hello”情况似乎与默认情况相同。更好:
public class Person {
private String name;
Person(String name) {
this.name = name;
}
String getName() {
return this.name;
}
public String greet(String m) {
if ("Goodbye".equals(m)) {
return "bye";
} else {
return String.format("Hi, my name is %s", name);
}
}
}
答案 2 :(得分:0)
通过致电assertEquals("Bye", jeff.greet("Goodbye"));
,您需要比较字符串"再见"至void
至.greet
,void
返回public String greet(String t){
if(t.equals("Hello"))
return "Hi my name is " + name;
else if(t.equals("Goodbye"))
return "bye";
else
return "Hi, my name is" + name;
}
。
改变问候:
assertEquals(String, String)
然后您可以使用assertEquals("bye", jeff.greet("Goodbye"));
之类的:
curses
在Java中比较字符串时,使用.equals()而不是==。所以' if(t ==" Hello")"'如果(t.equals(" Hello"))'
方法名称应以小写字母开头。
此外,字符串比较区分大小写,因此在比较字符串时请确保使用正确的大小写。
答案 3 :(得分:0)
使用greet(String)
测试assertEquals
方法没有意义,因为该方法不会返回任何内容。 assertEquals
用于断言从测试方法返回的实际结果是否等于您提供的预期值,就像上面的testGetName
一样。
将void greet(String)
更改为String greet(String)
似乎更合适,根据t
参数返回问候消息,以使您的代码更易于测试。
此外,您应该使用aStr.equals(bStr)
而不是aStr == bStr
来比较两个String。 ==
只是比较两个String对象的引用而不是它们的值。