使用 main 方法测试 java/.net 类是一种好习惯吗?
我在一些教科书中看到了它的推荐,但对我来说,使用单元测试框架似乎更有意义......
main 方法为您提供了一个类入口点,您可以测试类功能的一个方面。我猜你可能会测试很多,但它似乎不像使用 Junit 或 Nunit 那样有意义。
使用 main 方法测试 java/.net 类是一种好习惯吗?
我在一些教科书中看到了它的推荐,但对我来说,使用单元测试框架似乎更有意义......
main 方法为您提供了一个类入口点,您可以测试类功能的一个方面。我猜你可能会测试很多,但它似乎不像使用 Junit 或 Nunit 那样有意义。
一个明显的优势似乎是您可以对课程进行白盒测试。也就是说,您可以测试它的内部结构(例如私有方法)。你不能用单元测试来做到这一点,你也不想那样做,它们主要是从用户的角度测试界面和行为。
我认为开发从测试集成测试套件的主要方法(例如测试运行程序)调用的集成测试可能很有用。我不会以这种方式进行单元测试,因为单元测试框架提供了更好的机制来做到这一点。
[编辑]为了澄清,我并不是建议每个类都有用于集成测试的静态 main 方法,而是您可以编写一个带有静态 main 方法的集成测试程序,该方法将运行您的集成测试套件。
main 方法在某些情况下可能很有用,但是使用调试器然后编写单元测试(以提供一些防止回归的保险)是一种更强大的解决方案。
在 Java 中,可以接受有多个主要方法并将它们用于测试,但是 .NET 不允许这样做,如果您在同一个程序中有两个主要方法,您将收到编译器错误 CS0017,并告诉您Compile with /main to specify the type that contains the entry point.
我不得不说 Java 方式对我来说更有意义。