好的,我有一个可能的解决方案。
这是否是“正确”的方法,我会看看人们怎么说。
理论上没有什么能阻止我在
下的某处创建一个“TestActivity.java”类
/src/androidTest/java/com..bananas/TestActivity.java
这是真的。您可以在 androidTest 下的潜在 ActivityTest.java 中引用它。
public class ActivityTest extends ActivityInstrumentationTestCase2<TestActivity> {
public ActivityTest() {
super(TestActivity.class);
}
...
但是有一个故障/捕获。如果 TestActivity 需要引用任何字符串/常量(eg. res/layout/activity_test.xml),它们不能在/src/androidTest/res/layout/ 下。这个文件夹在构建过程中被莫名其妙地忽略了。即使它被列为 gradle 构建的 res 源文件夹(我通过 gradle dumping (println android.sourceSets.androidTest.dump()) 检查,在构建和运行测试时找不到内容......你会得到:
找不到与给定名称匹配的资源...
因此,这意味着您可以随意使用自定义活动来测试库,而无需启动一个完整的单独测试应用程序,但是您的库的 res 文件夹中会出现一些额外的混乱。 (尽管这些可以从最终的 .aar 中手动排除)。
如果有人能解释这个奇怪的问题,或者证明我错了,那就太好了,否则这行得通。 :)
编辑/更新
要添加的一件事是确保/src/androidTest 下的AndroidManifest.xml 包含类似以下内容:
<application>
<activity
android:name=".TestActivity"
android:label="@string/title_activity_test" >
</activity>
</application>
ActivityInstrumentationTestCase2 中的getActivity() 如果省略会抛出错误: java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN ...