JUnit тестирование метода Java Equal - PullRequest
2 голосов
/ 21 мая 2011

Я написал этот код, но я все еще новичок в JUnit и не имею представления о тестировании метода равных и равных2.Ниже приведен код, который я написал.Мой объект в этом коде состоит в том, чтобы увидеть, равно ли 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);
    }

Цель состоит в том, чтобы создать контрольный пример Junit равным и равным 2, поскольку созданный мною контрольный пример не обеспечивает надлежащего вывода. Вот тестовый пример 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);

    }

}

Ответы [ 2 ]

1 голос
/ 21 мая 2011

Вам необходимо создать экземпляры EqualMethods для их сравнения.Как это:

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

Редактировать: Несколько комментариев о коде:

  1. Если вы работаете с актуальной версией junit, вам не нужночтобы расширить TestCase и имя метода теста не нужно начинать с «test».
  2. Имена метода «равный» или «равный 2» могут быть не лучшей идеей ... в корневом объектеиз всех других объектов уже существует метод с именем «равно» ... может сбивать с толку.
  3. Скорее всего fname == name.getFname() не то, что вы хотите достичь.Это сравнивает ссылки на две строки, а не на содержимое.Строки являются объектами и должны сравниваться следующим образом string1.equals(string2).
0 голосов
/ 21 мая 2011

Это, вероятно, лучший способ сделать это:

private EqualsMethods a;
private EqualsMethods b;

@Before
public void before {
    a = EqualsMethods("a);
    b = EqualsMethods("b);
}

@Test
public void equalTest() {

    assertTrue(a.equal(b));
}

@Test
public void equal2Test() {

    assertTrue(a.equal2(b));
}

Я все еще думаю, что ваши действия немного странные, но вам, вероятно, следует иметь два класса с одинаковыми атрибутами и методами - каждый с методом equals. Затем вы должны создать тесты для обоих этих классов. Не уверен, чего вы здесь добиваетесь.

...