[英]Why can classes being unit tested with JUnit not have a main?
我的讲师以前曾提到过这一点,但是我真的不明白为什么会这样。 有人可以解释吗?
我们正在编写一个程序来计算素数数组列表,并且必须使用JUnit来确保此数组列表的所有成员都是素数。 为什么不能在测试此类时使用main?
非常感谢你 :)
好的,这些答案大部分都太复杂了。 我认为您的问题更为根本。 它是一个非常好的
答案是当您成为Java开发人员并开始编写随时间推移而更新/修复的大量代码时,那么使用一个单独的测试插件会有所帮助,该插件将自动从代码外部对您的代码运行测试以检查是否仍以您期望的方式工作。 这意味着您可以出于任何原因修复/调试代码的不同方面,然后您的老板走过去,并询问代码自修复以来仍然按照客户的意愿进行操作吗? 无需复杂,您可以在没有复杂的内部错误语句的情况下回答他,该错误语句与正常的程序输出混合在一起(并在非测试条件下降低了代码的速度),但是带有一个漂亮的绿色junit栏,表示所有语句仍然有效。 在开发大型项目并且要做数百个测试之前,您将看不到它的价值。 此外,junit还提供了许多其他技巧。
因为JUnit提供了一个调用您在类中提供的函数的main
。 您仍然可以拥有自己的main
功能。 当您运行JUnit时,它们将不会被使用。 您可以使用main
功能分别测试您自己的类,但是使用JUnit具有org.life.java的答案中所述的一些优点。
您可以,只是不推荐使用。 如果编写用于测试的单元测试,则可以使用junit测试运行程序来运行该测试并生成报告,以表明该测试是通过还是失败。 如果您不这样做,则需要编写自己的报告机制。
单元测试通常具有以下结构:
您的情况类似,因此很适合使用junit。
可用的单元测试API为您提供了通常必须自己编写的有用实用程序。
您为什么不尝试两种方法并自己看看。
在单元测试中,您并未测试任何整体。 单元测试通常必须测试UNIT的一种方法。 因此,您应该编写用于计算数组的方法,并使用Junit来测试该方法。
主要方法只是一个入口点,它“定义”过程的流程。 在单元测试中,我们不必担心流程。 我们只是在单元上作罢。 使用系统/组件测试而不是通过单元测试来验证程序流。
参见: org.junit.runner.JUnitCore.main(String...)
,诸如此类的基础。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.