所以这是类下面的链接,它没有主要方法,我正在尝试测试方法 [[1]:][1] 中的每一行是否正在处理,如果没有,它在哪里出错。
3 回答
您正在寻找的是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
注释的方法本身,运行它们,并向您显示测试结果。
您甚至可以安排多个测试套件,同时运行测试,在构建应用程序时自动运行它们以及所有其他类型的测试魔法......从这个开始,在网站上挖掘,您很快就会发现更多单元测试的优点.
当被测试的方法是非静态的时,你首先构造对象,然后你可以调用这些方法。如果您的 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"));
}
使用 BlueJ。它使您可以在没有任何 Main 方法的情况下使用对象。
只需将 Java 文件导入 IDE 并右键单击您获得的类的类图表示,即可创建它的对象。IDE 非常基本且用户友好,因为它在类和对象的图片表示中发挥了很大作用。
当您拥有一个或多个指定类的对象时,您会在 IDE 底部获得对象,您可以右键单击这些对象进行交互。祝你好运。