Mockito mock 在主方法 java 上不起作用


public class example
{
public void method()
{
System.out.println("Shouldn't be here!");
}
}
public class examplemain
{
public static void main(String[] args)
{
example obj = new example();
obj.method();
System.out.println("Inside Main");
}
}

我只想测试主要,不想调用方法函数。 我用了这个——

class examplemainTest
{
@Test
void main()
{
example obj = mock(example.class);
doNothing().when(obj).method();
String[] args = new String[0];
examplemain.main(args); //line 1
obj.method(); //line 2
}
}

但它仍然在第 1 行调用方法函数,并且仅适用于第 2 行。 以下是我在运行测试后得到的输出。

不应该在这里!

主内侧

进程已完成,退出代码为 0

examplemain.main()examplemainTest.main()中的obj变量引用不同的对象。examplemain.main(),您将在上一行创建的具体对象上调用方法。在examplemainTest.main()中,您将在方法开头创建的模拟对象上调用该方法。

您似乎难以理解Java编程中一些最基本的概念。在深入研究在单元测试中模拟依赖关系的相当高级的主题之前,您应该花更多时间研究对象初始化、对象引用、静态访问、字段可见性和范围。

我研究了一点,这里提供了处理此类类测试的最佳方法