在Android Studio中使用Roboguice进行测试

时间:2013-12-17 16:18:56

标签: android gradle android-studio roboguice

所以在花了一天左右的时间尝试使用android-gradle-plpugin让robolectric与gradle一起工作后,我读到the creator thinks it's too much hassle and doesn't use it himself

这就是我不能使用它的充分理由。但是现在我找不到任何关于如何设置正常的android测试以在模拟器上运行的文档。它似乎都与日蚀有关。如何使用Android studio运行正常的Android测试。我认为我需要修改build.gradle但是我该怎么做?

我还想使用roboguice将我的依赖项注入测试用例。

修改

所以我在黑暗中捅了一下然后试了这个,但是测试返回false(失败)

public class SearchTest extends ActivityTestCase {

    @Inject
    private ObjectMapper objectMapper;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        RoboInjector injector = RoboGuice.getInjector(getActivity());
        injector.injectMembersWithoutViews(this);
    }

    public void shouldSerialise() {
         System.out.println("called should serialise");
        Assert.assertNotNull(objectMapper);
    }

}

编辑2

所以我尝试了不同的方法。我跟着this tutorial似乎运行测试但是我遇到了提供清单查找的问题,因为我收到以下错误,

  

警告:在./AndroidManifest.xml中找不到清单文件。回来   仅适用于Android OS资源。要删除此警告,请注释   你的测试类使用@Config(manifest = Config.NONE)。

然后我使用了这个测试运行器......

public class RobolectricGradleTestRunner extends RobolectricTestRunner {

    public RobolectricGradleTestRunner(Class<?> testClass) throws  org.junit.runners.model.InitializationError {
        super(testClass);
    }

    @Override protected AndroidManifest getAppManifest(Config config) {
        String manifestProperty = System.getProperty("android.manifest");
        if (config.manifest().equals(Config.DEFAULT) && manifestProperty != null) {
            String resProperty = System.getProperty("android.resources");
            String assetsProperty = System.getProperty("android.assets");

            return new AndroidManifest(Fs.fileFromPath(manifestProperty), Fs.fileFromPath(resProperty),
                    Fs.fileFromPath(assetsProperty));
        }
        return super.getAppManifest(config);
    }
}

没有运气。我会更好地恢复到intellij并纯粹使用maven吗?

0 个答案:

没有答案