9

私はRobolectric単体テストに使用しており、Robolectricjar を 1.2 から 2.2 に更新し、この新しいバージョンでシャドウ クラスをバインドする方法を見つけようとしています。これは私が以前やっていたことです:

Robolectric.bindShadowClass(ShadowLog.class);

@Implements(Log.class)
public static class ShadowLog {
    public static int i(java.lang.String tag, java.lang.String msg) {
        System.out.println("[" + tag + "] " + msg);
        return 0;
    }
}

しかし、bindShadowClass API は利用できないと思います。addShadowClass を使用してみましたが、これがシャドウ クラスを追加する正しい方法かどうかわかりません。そのまま使えますか

ShadowMap a = new ShadowMap.Builder().addShadowClass(ShadowLog.class).build();

この shadowMap を使用して classHandler などを作成する必要がありますか? はいの場合、その classHandler を作成して使用し、Log クラス メソッドにアクセスするにはどうすればよいですか?

@Implements(Log.class)
public static class ShadowLog {
    public static int i(java.lang.String tag, java.lang.String msg) {
        System.out.println("[" + tag + "] " + msg);
        return 0;
    }
}

その後Log.i("LogTest", "log message ");

ありがとうございます

4

1 に答える 1

8

@Configシャドウ クラスのバインドは、注釈に置き換えられました。

例:

@Config(shadows = {ShadowLog.class})

この他の質問に対する私の回答Robolectric ブログも参照してください。

于 2013-07-25T04:01:33.053 に答える