在自己的主要测试类是一个好主意吗?

时间:2011-11-16 18:53:21

标签: java class testing

在测试代码时,使用自己的主程序进行测试是个好主意吗? 另一种选择是使用带有此测试的外部文件。

一个例子:

Class Foo{
    Foo(){/*...*/}
    public boolean met1(){/*...*/}
    //other metodes...

    //Tests
    public static void main(String args[]){
         Foo f = new Foo();
         //Test the correctness of data...

         boolean r = f.met1();
         //check the result...
    }
}

这项技术的优点和缺点是什么? 也许有更好的方法来测试我没有提到的代码。

4 个答案:

答案 0 :(得分:3)

如果它是一个真正自动的测试,你应该使用一个外部文件,就像JUnit一样。对运行所有测试,持续集成,以及绿色报告的大量支持和红线等...

如果它是一个GUI元素,您希望能够调出并查看它的外观,并且可能手动点击地点以查看发生的情况,那就是o.k.使用main()。这样评论。

同样,如果程序员可能想要测试并观察调试器中发生的事情是复杂的,那么改变命令行args等等,这是o.k.使用main()。这样评论。

答案 1 :(得分:1)

如果您只想在完成代码时运行代码以检查结果,则可以。 但我更喜欢特殊的Main类并从中调用这些方法(只是在许多类中没有垃圾代码)。 但无论如何JUnit测试要好得多。

答案 2 :(得分:0)

这并不重要,但在同一个类中使用main方法有一个好处,那就是你可以在main方法中使用类的私有静态类字段。

例如:

public class Foo
{

    private static String someText = "blah blah";

    public Foo(){/*...*/}

    public static void main(String args[])
    {
         System.out.println(someText);
    }
}

答案 3 :(得分:0)

除了让你的课程比他们需要的更大,我认为没有任何其他缺点。但是,我认为应该将这种浪费的努力用于编写正式化测试,作为可以帮助您避免错误的框架的一部分。