Kotlin版MainActivity用Java写Robolectric测试遇资源错误,是否可行?
可以用Java编写测试!问题出在代码细节上
别担心,完全可以用Java编写Robolectric测试来验证你的Kotlin版MainActivity。你遇到的android.content.res.Resources$NotFoundException错误和语言无关,只是测试代码里的一个小疏漏:
你在Java测试代码里直接调用了setupActivity(MainActivity.class),但这个方法是Robolectric类的静态方法,Java里必须明确加上Robolectric.前缀才能正确调用。而Kotlin因为支持顶层函数导入或扩展机制,所以可以直接调用而不报错。
修正后的Java测试代码
@RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class) public class MyActivityTest { @Before public void setup() { // 补上Robolectric.前缀即可 Robolectric.setupActivity(MainActivity.class); } }
如果修正后还是报错,可以检查这几点:
- 确认测试模块的Robolectric依赖版本和Kotlin测试用的完全一致
- 检查
BuildConfig的导入路径,确保是你app模块的BuildConfig而非其他模块 - 执行一次清理构建(Clean Project + Rebuild Project),有时候资源缓存会导致这类找不到资源的问题
内容的提问来源于stack exchange,提问作者Rgfvfk Iff
相关产品推荐
相关产品推荐

