【问题标题】:How to check at runtime if a particular method is run by a test case or not如何在运行时检查特定方法是否由测试用例运行
【发布时间】:2013-09-05 00:26:48
【问题描述】:

我正在使用 Maven 和 TestNG。 如何在运行时区分 TestNG/JUnit 测试用例或主 java 代码调用特定方法时

【问题讨论】:

  • 你想要一个像 jacoco 或 cobertura 这样的代码覆盖工具
  • 清除 XY 问题。如果您需要知道这类事情,那么您要解决的问题就有问题。该方法的行为应该相同,无论是谁调用它。
  • 伙计们,你们太苛刻了。这对皮特来说是一个很好的受教时刻,我们应该给他一个更好的方法来完成他想做的事情,而不是批评(对我们来说)显然是不好的方法。

标签: java maven


【解决方案1】:

几个 cmets 都在暗示这一点,但是在测试中构建以一种方式工作的语句通常是极差的做法,而当应用程序独立运行时则以另一种方式工作。这增加了应用通过测试但在生产中失败的可能性。

相反,您应该看看为什么要做出这种区分。一般来说,这将是为了一些依赖对象,或者由于输入一个或另一个品种。在这些情况下,最好将类设计为接受依赖对象,通过配置和测试将其插入其中,唯一改变的是配置。被测类不应将依赖类彼此区分开来。相反,只需使用它们的接口,这样您就可以创建用于测试的模拟类。

当接受输入时,重定向输入源以接受脚本输入。

对于数据库,重定向到为测试等配置的内存数据库。

您会发现这种方法将极大地提高您编写的代码的质量,并减少错误潜入您的单元测试的可能性。

【讨论】:

    【解决方案2】:

    在运行时,您的代码从不运行单元测试。除非您从代码中显式调用它们,否则您永远不应该这样做。

    单元测试只能手动运行,或者在 maven 生命周期的测试阶段运行。

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 2011-05-17
      • 2012-07-27
      相关资源
      最近更新 更多