Java 机器人分子测量仪';t使用~config包名称空间属性
我想将robolectric添加到一个现有的实时android dagger项目中 问题是AndroidManifest中的包名与R文件物理路径不一致 robolectric根据manifest“package_name”属性搜索R文件 我想在我的机器人分子测试中使用@ConfigJava 机器人分子测量仪';t使用~config包名称空间属性,java,android,unit-testing,github,robolectric,Java,Android,Unit Testing,Github,Robolectric,我想将robolectric添加到一个现有的实时android dagger项目中 问题是AndroidManifest中的包名与R文件物理路径不一致 robolectric根据manifest“package_name”属性搜索R文件 我想在我的机器人分子测试中使用@Config @Config(manifest = " --my---path/AndroidManifest.xml", sdk = 21, packageName = "com.google.a
@Config(manifest = " --my---path/AndroidManifest.xml",
sdk = 21,
packageName = "com.google.andorid.apps.ridematch",
application = TestApplication.class)
但显然,“packageName”注释是无效的
我想在robolectric开源软件中调试这个,
但我不确定问题代码在哪里
这是我第一次为github开源项目做贡献的机会
我的尝试:
试试看(1)
我认为错误在代码中:
@Test
public void shouldAssignThePackageNameFromTheManifest() throws Exception {
AndroidManifest appManifest = newConfigWith("com.wacka.wa", "");
Application application = defaultTestLifecycle.createApplication(null, appManifest, null);
shadowOf(application).bind(appManifest, null);
assertThat(application.getPackageName()).isEqualTo("com.wacka.wa");
assertThat(application).isExactlyInstanceOf(Application.class);
}
所以我写了这段代码:
@Test
public void shouldAssignThePackageNameFromConfigWhenHaveConfigAndManifest() throws Exception {
AndroidManifest appManifest = newConfigWith("com.wacka.wa", "");
Properties properties = new Properties();
properties.put("packageName", "com.robolectric.MyTestClass");
properties.put("application", "com.robolectric.TestTestApplication");
// properties.put("application", "FakeApp");
Config config = Config.Implementation.fromProperties(properties);
Application application = defaultTestLifecycle.createApplication(null, appManifest, config);
shadowOf(application).bind(appManifest, null);
assertThat(application.getPackageName()).isEqualTo("com.robolectric.MyTestClass");
assertThat(application).isExactlyInstanceOf(TestTestApplication.class);
}
在“bind”中,我使非空配置包名覆盖appManifest包名
但我找不到谁叫“defaultTestLifecycle.createApplication”
试试看(2)
我开始研究这个类及其测试:
@Override
protected AndroidManifest getAppManifest(Config config) {
I saw this test:
@Ignore
@Config(constants = BuildConfig.class, packageName = "fake.package.name")
public static class PackageNameTest {
@Test
public void withoutAnnotation() throws Exception {
}
}
我还补充了我的观点:
@Ignore
@Config(constants = BuildConfig.class, packageName = "fake.package2.name", manifest = "//java/com/google/android/apps/ridematch/environments/debug:AndroidManifest.xml")
public static class PackageNameConfigAndManifestTest {
@Test
public void withoutAnnotation() throws Exception {
}
}
但是测试通过了,所以bug不存在。我再次问,为什么不使用
RobolectricGradleTestRunner
?正如所有教程所示。不