PDFView を使用して PDF ファイルを表示しましたが、成功しました。しかし、単体テストでこのメソッドをテストする方法がわかりません。
com.github.barteksc.pdfviewer.PDFView pdfview = mainView.findViewById(R.id.pdfview);
public void showDocument(final InputStream inputStream){
pdfview.fromStream(inputStream)
.enableSwipe(true)
.swipeHorizontal(false)
.enableDoubletap(true)
.onPageChange(new OnPageChangeListener() {
@Override
public void onPageChanged(int page, int pageCount) {
}
})
.onLoad(new OnLoadCompleteListener() {
@Override
public void loadComplete(int nbPages) {
closeProgress();
totalPages = nbPages;
System.out.println("nbPages"+nbPages);
}
})
.onError(new OnErrorListener() {
@Override
public void onError(Throwable t) {
System.out.println("onError"+t.getMessage());
}
})
.load();
}
私のテスト方法:</p>
@Test
public void testFetchDataFromNet() {
DocumentActivity activity = Robolectric.setupActivity(DocumentActivity.class);
activity.showDocument(PDFData.iputStreamPDF);
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
}
ただし、 onLoad() も onError() もコンソールにデータを出力しません。カスタムシャドウを試してみました:</p>
@Implements(PDFView.class)
public class ShadowPDFView extends ShadowRelativeLayout {
Context context;
AttributeSet attrs;
@Implementation
public void __constructor__(Context context)
{
}
@Implementation
public void __constructor__(Context context, AttributeSet attrs)
{
this.context = context;
this.attrs = attrs;
}
@Implementation
public void __constructor__(Context context, AttributeSet attrs, int defStyleAttr)
{
}
PDFView.Configurator configurator;
@Implementation
public PDFView.Configurator fromStream(InputStream stream) {
DocumentSource documentSource = new InputStreamSource(stream);
Class clazz = null;
try {
Class c2 = Class.forName("com.github.barteksc.pdfviewer.PDFView$Configurator");
Constructor constructor = c2.getDeclaredConstructor(new Class[] {PDFView.class, DocumentSource.class });
constructor.setAccessible(true);
if (constructor != null) {
configurator = (PDFView.Configurator) constructor.newInstance(new PDFView(context,attrs), documentSource);
}
} catch (Exception e) {
e.printStackTrace();
}
return configurator;
}
}
しかし、何も変わりませんでした。
これを達成する方法を手伝ったり、アイデアを提供してみてください。
とても感謝しています!