java Equal方法的JUnit测试

Spl*_*ter 6 java junit junit4

我写了这段代码,但我对 JUnit 还很陌生,不知道测试 equal 和 equal2 方法。下面是我写的代码。我在此代码中的目的是使用 equal 方法查看 fname 是否等于 lname ,并使用 equal2 检查 fname 是否与 fname (它本身)相同,也许我的代码也有错误。

public class EqualMethods {

    /**
     * @param args
     */

    private String fname;
    private String lname;

    public EqualMethods(String fl)
    {
        fname = fl;

    }

    public EqualMethods(String f, String l)
    {
        fname = f;
        lname = l;
    }


    public String getFname() {
        return fname;
    }

    public String getLname()
    {
        return lname;
    }

    public void setLname(String lname)
    {
        this.lname = lname;
    }



    public void setFname(String fname) {
        this.fname = fname;
    }


    public int equal(EqualMethods name)
    {
        if(fname == name.getFname() && lname == name.getLname())
        {

            return 1;
        }
        else
        {
            return 0;
        }
    }

    public int equal2(Object o)
    {
        if(o.getClass() == EqualMethods.class )
        {
            EqualMethods e = (EqualMethods) o;
            if(this.fname.equals(e.fname))
            {
                return 1;
            }

            return 0;
        }
        return 0;
    }
    public String toString()
    {
        return (" My first name is: "+fname + "  Last name is:  " + lname);
    }
Run Code Online (Sandbox Code Playgroud)

目标是创建一个 equal 和 equal2 的 Junit 测试用例,因为我创建的测试用例没有提供正确的输出。这是我编写的 JUnit 测试用例,但我无法使我的方法静态,但如何解决它?

public class EqualMethodsTest extends TestCase{

    @Test
    public void testEqual2() {
        String name = "goma";
        int ret = 1;
        int ans ;

        ans= EqualMethods.equal2(name);

        assertEquals(ret,ans);

    }

}
Run Code Online (Sandbox Code Playgroud)

Arn*_*sch 7

您需要创建 EqualMethods 实例来比较它们。像这样:

public class EqualMethodsTest extends TestCase{
    @Test
    public void testEqual2() {
        assertEquals(1, new EqualMethods("goma").equal(new EqualMethods("goma")));
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑: 关于代码的一些评论:

  1. 如果您使用实际版本的 junit,则不需要扩展 TestCase,并且测试方法的名称不需要以“test”开头。
  2. 将方法命名为“equal”或“equal2”可能不是最好的主意...在所有其他对象的根 Object 中,已经有一个名为“equals”的方法...可能会令人困惑。
  3. 很可能fname == name.getFname()没有达到您想要完成的目标。这会比较对两个字符串的引用,而不是内容。字符串是对象,可以像这样进行比较string1.equals(string2)