Java 基于应用程序参数JUnit验证行为

Java 基于应用程序参数JUnit验证行为,java,junit,mockito,Java,Junit,Mockito,当从cmd运行java应用程序时,验证一个行为在传递参数时被触发,另一个行为在没有传递参数时被触发的正确方法是什么 由于主要方法是静态的,所以验证起来有点棘手,但我也觉得引入PowerMock有点过头了 基本上,如果没有cmd参数,我想创建一个具有无参数构造函数的对象,如果有传递给应用程序的参数,我想创建一个具有字符串参数构造函数的对象。我看不到您的代码,所以我只能想象它的样子 我可以想象,在main方法中,一些逻辑被触发,从而导致一个或另一个事件 我建议考虑将参数的处理移动到另一个类(Argu

当从cmd运行java应用程序时,验证一个行为在传递参数时被触发,另一个行为在没有传递参数时被触发的正确方法是什么

由于主要方法是静态的,所以验证起来有点棘手,但我也觉得引入PowerMock有点过头了


基本上,如果没有cmd参数,我想创建一个具有无参数构造函数的对象,如果有传递给应用程序的参数,我想创建一个具有字符串参数构造函数的对象。

我看不到您的代码,所以我只能想象它的样子

我可以想象,在main方法中,一些逻辑被触发,从而导致一个或另一个事件

我建议考虑将参数的处理移动到另一个类(
ArgumentProcessor
),该类可以由构造函数中的builder对象或factory对象提供,并且它可以有一个
进程(String[]args)
方法,该方法返回可运行或任何您想要实现的结果。
如果您随后向ArgumentProcessor提供了一个存根生成器/工厂,那么我认为应该可以检查逻辑是否以正确的方式处理。

是什么阻止您调用
main
并在测试中传递参数?请参阅接受的答案,我决定按照建议重写应用程序。我想问题在于验证对对象方法的调用,因为主方法是静态的,这意味着您无法模拟从它调用的对象。