Java Getter和assertsEquals函数
我已经为Java Getter和assertsEquals函数,java,junit,Java,Junit,我已经为Person类编写了一个代码,并在该类中创建了一个构造函数Person和参数name。现在我必须创建一个此类的实例,该类将为人名提供一个getter,并且还创建一个此类的实例,该类将响应一个greet方法,该方法接受一个参数:message 当信息为“你好”时,问候语必须返回: 嗨,我是{{name} 当信息为“再见”时,问候必须返回: 再见 当消息是其他内容时,greet将返回所提供的消息。我有一个经过测试的案例代码,但我一直使用assertEquals()函数和getter函数。现在
Person
类编写了一个代码,并在该类中创建了一个构造函数Person
和参数name
。现在我必须创建一个此类的实例,该类将为人名提供一个getter,并且还创建一个此类的实例,该类将响应一个greet
方法,该方法接受一个参数:message
当信息为“你好”时,问候语必须返回:
嗨,我是{{name}
当信息为“再见”时,问候必须返回:
再见
当消息是其他内容时,greet
将返回所提供的消息。我有一个经过测试的案例代码,但我一直使用assertEquals()
函数和getter函数。现在我面临assertfunction
的错误。有谁能告诉我,assertfunction
和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"));
}
}
不能将
字符串
与返回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);
}
}
}
不能将
字符串
与返回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);
}
}
}
请参见您的方法返回void:
public void greet(String t)
您希望如何获取和断言void的值
将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);
}
}
}
请参见您的方法返回void:
public void greet(String t)
您希望如何获取和断言void的值
将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);
}
}
}
通过呼叫assertEquals(“再见”,jeff.greet(“再见”)您正在将字符串“Bye”与
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"));
在Java中,比较字符串时使用.equals()而不是==。所以“if(t==“Hello”)”应该是“if(t.equals(“Hello”)”
方法名称应以小写字母开头
此外,字符串比较区分大小写,因此请确保在比较字符串时使用了正确的大小写。通过调用
assertEquals(“再见”,jeff.greet(“再见”);
您将字符串“Bye”与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"));
在Java中,比较字符串时使用.equals()而不是==.So'if(t==“Hello”)“'将是'if(t.equals(“Hello”)'
方法名称应以小写字母开头
此外,字符串比较区分大小写,因此请确保在比较字符串时使用正确的大小写。使用
assertEquals
测试greet(String)
方法没有意义,因为该方法不返回任何内容。assertEquals
用于断言从测试方法返回的实际结果是否等于您提供的预期值,就像上面的testGetName
一样
将void greet(String)
更改为String greet(String)
似乎更合适,它根据t
参数返回问候语消息,以使代码更易于测试
此外,您应该使用
aStr.equals(bStr)
而不是aStr==bStr
来比较两个字符串=
只需比较两个字符串对象的引用,而不是它们的值。使用assertEquals
测试greet(String)
方法没有意义,因为该方法不返回任何内容。assertEquals
用于断言从测试方法返回的实际结果是否等于您提供的预期值,就像上面的testGetName
一样
将void greet(String)
更改为String greet(String)
似乎更合适,它根据t
参数返回问候语消息,以使代码更易于测试
此外,您应该使用
aStr.equals(bStr)
而不是aStr==bStr
来比较两个字符串=
只需比较两个字符串对象的引用,而不是它们的值。如果“Hello”和else
也应该这样做,那么检查“再见”并在else
中执行其余操作不是更好吗?这也防止了两个版本中的差异,比如打字错误。同意,我在发布代码后就想到了这一点。在我不关心的地方,这个类已经足够琐碎了,但是真正的代码应该总是尽可能的枯燥。如果“Hello”和else
也应该这样做,那么检查“再见”并在else
中完成其余的工作不是更好吗?这也防止了两个版本中的差异,比如打字错误。同意,我在发布代码后就想到了这一点。在我不关心的地方,这个类已经足够琐碎了,但是真正的代码应该总是尽可能的枯燥。