我想编写一个测试用例,它将验证我的类中的方法。
我的方法中有一个本地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
类中的静态方法。我该如何解决? 最佳答案
更好的应用程序设计可能是使用ApplicationLauncher
作为接口并创建生产和测试实现(或仅模拟测试实现)。您可能需要将ApplicationLauncher
的实例传递到您的RunApp
类中,也许是在构造函数中。