开始使用JUnit,如何运行简单的测试

时间:2017-07-26 15:00:25

标签: java junit

我有一些代码,类似于:

 public class Foo
 {
      private String Bar;

      public Foo(String _bar)
      {
           Bar = new String(_bar);
      }

      public String getBar() { return Bar; }

      @Override
      public boolean equals(Object o)
      {
           if (o == this) return true;
           if (!(o instanceof Foo)) return false;

           Foo temp = (Foo)o;
           if (Bar == null) return (Bar==temp.Bar);
           return (Bar.equals(temp.Bar));
      }

      @Override
      public int hashCode()
      {
           return Objects.hash(this.Bar);
      }
 }

我想尝试为这个类编写一个测试用例,它将测试我的所有方法。我也试图了解套件()方法是什么以及如何使用TestRunner。

我将如何开始这样做?

编辑1:修正了上面的错误

另外,一个测试类

 public class FooTest
 {
      private FooTest ft;

      @Before
      public void setUp() throws Exception
      {
           ft = new FooTest("baz");
      }

      @Test
      public void testGetFoo()
      {
           assertEquals(ft.getBar(),"baz");
      }

      @Test
      public void testEquals()
      {
            assertEquals(ft.equals(new Foo("baz")), true);
            assertEquals(ft.equals(new String("no")),false);
            assertEquals(ft.equals(ft), true);
            assertEquals(ft.equals(null),false);
      }
 }

我遇到过这个网站(http://users.csc.calpoly.edu/~djanzen/tdl/tddintro/helloworld/)非常有帮助。但是,我在AllTests.java下的页面上的代码部分遇到了问题,具体来说是:

public static junit.framework.Test suite() 
{
   return new JUnit4TestAdapter(AllTests.class);
}

在eclipse中,我收到以下错误消息:

 The method JUnit4TestAdapter(Class<Foo>) is undefined for the type AllTests

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

这是一个简单的Junit测试,用于练习您的代码:

import org.junit.Test;
import static org.junit.Assert.*;

public class FooTest {
    @Test
    public void testFooIsNotNull() {
        Foo myFoo = new Foo("Bar");
        assertNotNull(myFoo);
    }

    @Test
    public void testFooBarEqualsBar() {
        Foo myFoo = new Foo("bar");
        assertEquals("bar", myFoo.getBar());
    }

我正在测试myFoo不是NULL,&#34; bar&#34;等于myFoo.getBar()

我修复了你的代码,所以等于覆盖工作:

import java.util.Objects;

public class Foo {

    private String Bar;

    public Foo(String bar) {
        Bar = new String(bar);
    }

    public String getBar() {
        return Bar;
    }

    @Override
    public boolean equals(Object o) {
        if (o == this) 
            return true;

        if (!(o instanceof Foo))
            return false;

        Foo temp = (Foo)o;
        if (Bar == null) 
            return (Bar==temp.Bar);

        return (Bar.equals(temp.Bar));
    }

    @Override
    public int hashCode() {
        return Objects.hash(this.Bar);
    }
}

您的代码需要进一步的工作。但简单的单元测试工作。