-1

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

4

3 回答 3

2

您正在寻找的是JUnit,或者更具体地说,是那里“入门”下的站点。

简而言之,如果您有一个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方法的文档。

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

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

于 2012-06-17T23:17:21.277 回答
0

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

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"));
}
于 2012-06-17T22:35:19.187 回答
-1

使用 BlueJ。它使您可以在没有任何 Main 方法的情况下使用对象。

只需将 Java 文件导入 IDE 并右键单击您获得的类的类图表示,即可创建它的对象。IDE 非常基本且用户友好,因为它在类和对象的图片表示中发挥了很大作用。

当您拥有一个或多个指定类的对象时,您会在 IDE 底部获得对象,您可以右键单击这些对象进行交互。祝你好运。

于 2012-06-17T22:20:26.127 回答