Getter和assertsEquals函数

时间:2015-08-09 14:59:56

标签: java junit

我为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"));
    }
}

4 个答案:

答案 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.greetvoid返回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对象的引用而不是它们的值。