不同Android SDK版本的JUnit4参数化测试

Posted

技术标签:

【中文标题】不同Android SDK版本的JUnit4参数化测试【英文标题】:JUnit4 parameterized test with different Android SDK versions 【发布时间】:2022-01-03 06:41:30 【问题描述】:

我想测试一个函数,该函数具有针对不同 android SDK 构建版本和一些参数的条件语句。函数如下:

if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) 
    // do something with parameter(s) and return it;
 else 
    // do something with parameter(s) and return it;

我可以使用Parameterized.class runner 或 JUnitParams 让它使用一组参数运行。我还可以创建单个测试函数,并可以更改SDK_INT 字段并调用该函数进行测试。但是我无法将这两种方法结合到同一个单元测试类中。

是否有任何注释可以为特定的测试方法设置 SDK?或者测试上述功能的最佳方法是什么?

【问题讨论】:

【参考方案1】:

一个简单但不优雅的解决方案是使用Enclosed runner 和内部类更改带有@BeforeClass 注释的函数中的SDK_INT 字段。

【讨论】:

以上是关于不同Android SDK版本的JUnit4参数化测试的主要内容,如果未能解决你的问题,请参考以下文章

junit 单元测试 - 参数化测试

31.0.0 不是有效的 SDK 版本。选项是 26.0.0 未版本化

Java单元测试工具:JUnit4

Junit4单元测试

android studio 开发中启动android项目报错sdk版本不一致解决方案

Android studio1.5.1 NDK配置开发