【发布时间】:2020-08-03 21:06:32
【问题描述】:
我是 Junit 和 Mockito 单元测试的新手。我需要对方法“processFiles(final File folder)”进行单元测试
由于我在这个名为 myService.isFileOk(data) 的方法中调用了另一个服务,我想我需要模拟这个服务以使其返回 true。
但是当我运行我的测试时,我得到一个空指针异常。
这是 processFiles 方法的部分代码:
@EJB
private transient MyService myService;
public void processFiles(final File folder)
{
File[] fileNames = folder.listFiles();
List<String> lines = new ArrayList<>();
boolean isFirstFile = true;
try
{
for (File file : fileNames)
{
List<String> l = readContent(file, isFirstFile);
l.forEach(i -> lines.add(i));
isFirstFile = false;
}
String[] data = lines.get(0).trim().split(";");
if (!this.myservice.isFileOk(data))
{
// ...
}
else
{
// ...
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
这就是我尝试测试我的 processFile 方法的方式
@Mock
public MyService myService ;
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Test
public void testWrite2() throws IOException {
final File tempFile1 = temporaryFolder.newFile("tempFile.txt");
final File tempFile2 = temporaryFolder.newFile("tempFile2.txt");
String[] data = {"a", "b" , "c" , "d"} ;
this.myService = new MyService();
MyService myService = Mockito.mock(MyService.class);
when(myService.isFileOk(data)).thenReturn(true);
//... myclass.processFiles(file);
}
你知道我应该如何继续模拟 isFileOk 吗?非常感谢您的帮助
【问题讨论】:
-
持有@EJB私有瞬态MyService myService的类的名称是什么;
-
如何初始化 myclass 实例?我猜这是持有 myService 的 myclass
-
同时删除“this.myService = new MyService();”如果你要模拟它。
-
是的,MyClass 持有 @EJB 私有瞬态 MyService myService;
-
然后我像这样初始化它:@Mock ListFilesService listFilesService;