如何在此类中测试此方法以查看它是否正常工作但它没有主要内容

时间:2012-06-17 22:16:15

标签: java testing junit

所以这是类下面的链接,它没有主要方法,我试图测试并查看方法[[1]:] [1]中的每一行是否正在处理,如果不是它在哪里得到错误。

3 个答案:

答案 0 :(得分:2)

您要找的是JUnit,或者更具体地说,是"Getting Started"下的网站。

简而言之,如果您的班级Dog使用了这样的方法

public boolean isBrown() {
    // some hard & heavy logic
}

你可能想知道它是否有效。为此,您需要在应用程序中使用一些测试类创建一个test包,其中一个可以命名为DogTests并包含以下内容:

public class DogTests {
    @Test(expected = NullPointerException.class)
    public void nullDogShouldFailWithNpe() throws Exception {
        new Dog(3, 14, null);
    }

    @Test
    public void brownDogShouldBeBrown() throws Exception {
        Animal animal  = new Dog(3, 14, "brown");
        assertTrue(animal.isBrown());
    }

    @Test
    public void greenDogShouldNotBeBrown() throws Exception {
        Animal animal  = new Dog(3, 14, "green");
        assertTrue(animal.isBrown());
    }
}

您可以找到有关这些assert方法here的文档。

您能看到方法上方的@Test注释吗?这是一个JUnit 4结构,它说“嘿,我是一个测试方法。从这个类运行测试时,也运行我!”这里不需要main()方法 - 当你试图“运行”包含的类时,你的IDE会注意到所有 @Test注释方法本身,运行它们,并向你显示测试结果。

您甚至可以安排多个测试套件,同时运行测试,在构建应用程序时自动运行它们以及所有其他类型的测试魔术......从这开始,在网站上挖掘,您很快就会发现更多单位测试善良。

答案 1 :(得分:0)

当测试的方法是非静态的时,首先构造对象,然后调用方法。如果您的JUnit测试用例位于与正在测试的类同名的包中,则可以访问公共成员和受保护成员。这是针对没有主要方法的HashMap类的示例测试。

public void testDuplicateKey() throws Exception {
  HashMap<String,String> map=new HashMap();
  // setup
  map.put("key1", "value1");
  map.put("key2", "value2");
  map.put("key3", "value3");
  assertEquals(3, map.size());
  // overwrite an existing key
  map.put("key2", "value4");
  assertEquals(3, map.size());
  assertEquals("value4", map.get("key2"));
}

答案 2 :(得分:-1)

使用BlueJ。它允许您在没有任何Main方法的情况下处理对象。

只需将Java文件导入IDE,然后右键单击所获得的类的Class Diagram演示文稿,即可创建它的对象。 IDE非常基本且用户友好,因为它在类和对象的图片表示中非常有用。

如果您拥有指定类或类的对象,则可以在IDE底部获取对象,您可以右键单击该对象进行交互。祝你好运。