我想在运行所有测试之前调用一些方法。
库提供了要使用的准备设备的初始化程序:

    SomeLibraryInitializer.init(new SomeLibraryInitializer.Callback() {
        @Override
        public void onFinish() {

        }
    });


调用onFinish时即可使用该库。

无法模拟库类(正在使用proguard),因此我必须在JUnit tests中使用该初始化程序。

有什么方法可以等到回调onFinish()被调用?

尝试使用ShadowApplication.runBackgroundTasks();和Semaphore,但似乎不起作用。
我正在使用@BeforeClass批注在所有测试之前运行它。

最佳答案

您想要的是扩展AndroidJUnitRunner,然后将其设置为int build.gradle文件,例如

android {
    defaultConfig {
        testInstrumentationRunner "com.example.MyTestRunner"
    }
}


编辑

如果查看source,将看到被调用一次的onCreate方法。您想要做的就是添加此方法,并在其中添加自己的逻辑。然后,当您完成操作后,应致电start()方法。

10-04 23:40