验证在传递参数时触发一种行为,而在从cmd运行Java应用程序时没有传递参数时触发另一种行为的正确方法是什么?
由于主要方法是静态的,因此验证起来有点棘手,但我也觉得引入 PowerMock 有点过分了。
基本上,如果没有cmd参数,我想创建一个带有没有参数的构造函数的对象,如果有传递给应用程序的参数,则创建一个带有String参数构造函数的对象。
我没有看到你的代码,所以我只能想象它的样子。
我可以想象在 main 方法中触发了一些逻辑,这会导致一个或另一个事件。
我建议考虑将参数的处理转移到另一个类(ArgumentProcessor
(,该类可以在构造函数中与构建器对象或工厂对象一起馈送,并且可以有一个返回可运行对象或任何您想要实现的process(String [] args)
方法。 如果您随后向 ArgumentProcessor 提供存根生成器/工厂,那么我认为应该可以检查逻辑是否已以正确的方式处理。