使用Mockito模拟最终的DataFrameWriter类

时间:2018-07-30 15:41:39

标签: java spring apache-spark-sql mockito

我有以下具有以下功能之一的Java类

 public class DatasetFunctionality {
      public void appendDataFrame(Dataset target, Dataset source, String path) {

    source.write().format("parquet").mode(SaveMode.Append).save(path);
   } 
 }

我想使用模拟(1.10.19)测试此功能。相同的代码段是:-

    public class DatasetFunctionalityTest{

     @Spy
     DatasetFunctionality dsFunc= new DatasetFunctionality();

     @Test
     public void appendDataFrame() {
       Dataset sourceFrame = mock(Dataset.class);
       Dataset targetFrame = mock(Dataset.class);
       when(sourceFrame.write()).thenReturn(mock(DataFrameWriter.class));
       when(sourceFrame.write().format("parquet")).thenReturn(mock(DataFrameWriter.class));
       when(sourceFrame.write().format("parquet").mode(SaveMode.append)).thenReturn(mock(DataFrameWriter.class));
       doNothing().when(sourceFrame.write().format("parquet").mode(SaveMode.append)).save(anyString()));
       dsFunc.appendDataFrame(targetFrame,sourceFrame);

       }
      }

我得到的错误是

       org.mockito.exceptions.base.MockitoException: Cannot mock/spy class com.project.Utilities Mockito cannot mock/spy because : - final class

我知道DataFrameWriter是最后一个类,因此我们不能使用模仿1来模拟它。但是,我没有灵活性将模仿2升级到2,我也不想使用PowerMock。

有什么方法可以实现这个junit模拟吗?我愿意接受其他模拟或测试此功能的方法。

0 个答案:

没有答案