Java 如何在运行时检查特定方法是否由测试用例运行
我正在使用Maven和TestNG。Java 如何在运行时检查特定方法是否由测试用例运行,java,maven,Java,Maven,我正在使用Maven和TestNG。 如何在运行时区分TestNG/JUnit测试用例或主java代码调用特定方法在运行时,您的代码从不运行单元测试。除非您从代码中显式地调用它们,否则您永远不应该这样做 单元测试只能手动运行,或者在maven生命周期的测试阶段运行。有几条评论暗示了这一点,但是,在测试中以一种方式运行内置语句,而在应用程序独立运行时以另一种方式运行内置语句,这通常是非常糟糕的做法。这增加了应用程序通过测试但在生产中失败的可能性 相反,你应该看看你为什么想要做出这种区分。一般来说,
如何在运行时区分TestNG/JUnit测试用例或主java代码调用特定方法在运行时,您的代码从不运行单元测试。除非您从代码中显式地调用它们,否则您永远不应该这样做
单元测试只能手动运行,或者在maven生命周期的测试阶段运行。有几条评论暗示了这一点,但是,在测试中以一种方式运行内置语句,而在应用程序独立运行时以另一种方式运行内置语句,这通常是非常糟糕的做法。这增加了应用程序通过测试但在生产中失败的可能性 相反,你应该看看你为什么想要做出这种区分。一般来说,这将是为了某些依赖对象,或由于某种类型的输入。在这些情况下,最好让类接受通过配置和测试插入到其中的依赖对象,唯一改变的是配置。被测试的类别不应将从属类别彼此区分开来。相反,只需使用它们的接口,就可以创建用于测试的模拟类 接受输入时,重定向输入源以获取脚本输入 对于数据库,重定向到为测试等配置的内存中数据库
您会发现,这种方法将极大地提高您编写的代码的质量,并降低bug通过单元测试的可能性。您需要像jacoco或Cobertura这样的代码覆盖工具来解决XY问题。如果你需要知道这类事情,那么你试图解决的问题就有问题了。不管是谁说的,这个方法应该是一样的。伙计们,你们太苛刻了。这对皮特来说是一个很好的教育时刻,我们应该给他一个更好的方法来完成他想要做的事情,而不是批评(对我们来说)明显是一个糟糕的方法。