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
中完成其余的工作不是更好吗?这也防止了两个版本中的差异,比如打字错误。同意,我在发布代码后就想到了这一点。在我不关心的地方,这个类已经足够琐碎了,但是真正的代码应该总是尽可能的枯燥。