我想编写一个测试用例来验证我的类中的方法。
我有本地ApplicationLauncher
我的方法中的对象必须被模拟,因为它调用方法 launch()
,不应在单元测试中调用。
public class RunApp
{
public void check(String name)
{
if(name !=null)
{
ApplicationLauncher launcher = Application.getLauncher("launch");
String appName = name+".bat";
launcher.launch(appName);
}
}
}
我的 JUnit 测试代码如下:
RunApp runapp = new RunApp();
@Mock
ApplicationLauncher launcher;
@Test
public void test()
{
runapp.check("test");
verify(launcher,atLeastOnce).launch(anyString());
}
我无法返回像
这样的模拟对象when(Application.getLauncher(anyString())).thenReturn(launcher);
自 getLauncher
是 Application
中的静态方法类(class)。我该如何解决这个问题?
最佳答案
更好的应用程序设计可能是将 ApplicationLauncher
作为接口(interface)并创建生产和测试实现(或者只是模拟测试实现)。您需要将 ApplicationLauncher
的实例传递到您的 RunApp
类中,也许是在构造函数中。
关于java - 模拟静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13718697/