0

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;
}

}

しかし、何も変わりませんでした。

これを達成する方法を手伝ったり、アイデアを提供してみてください。

とても感謝しています!

4

1 に答える 1