不同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参数化测试的主要内容,如果未能解决你的问题,请参考以下文章