当前位置: 首页 > 知识库问答 >
问题:

在Android 19及以下版本上运行仪器测试的JunitParams异常

呼延运恒
2023-03-14

在Android 19及以下版本上使用JunitParams运行程序时,我看到了一个异常。

  1. 使用最新的Android测试支持库编写简单的测试套件并在Android 19或更低版本上执行

下面的测试套件将重现这个问题

@RunWith(JUnitParamsRunner.class)
public class SimpleTest {
    @Test
    @Parameters({ "false", "true" })
    public void simpleParameterizedTest(boolean enabled) {
        // Should execute and pass
    }
}

测试应该执行并通过。

不运行测试,因为"找不到测试"

我检查了日志,我看到以下异常发生。

09-07 12:17:01.187 3338-3355/com.twilio.video.test W/dalvikvm: Exception Ljava/util/regex/PatternSyntaxException; thrown while initializing Ljunitparams/naming/MacroSubstitutionNamingStrategy;
09-07 12:17:01.187 3338-3355/com.twilio.video.test E/TestExecutor: Fatal exception when running tests
                                                                   java.lang.ExceptionInInitializerError
                                                                       at junitparams.internal.TestMethod$1.computeValue(TestMethod.java:40)
                                                                       at junitparams.internal.TestMethod$1.computeValue(TestMethod.java:35)
                                                                       at junitparams.internal.Memoizer.get(Memoizer.java:11)
                                                                       at junitparams.internal.TestMethod.describe(TestMethod.java:116)
                                                                       at junitparams.internal.ParameterisedTestClassRunner.describeParameterisedMethod(ParameterisedTestClassRunner.java:161)
                                                                       at junitparams.JUnitParamsRunner.describeMethod(JUnitParamsRunner.java:502)
                                                                       at junitparams.internal.ParametrizedTestMethodsFilter.filteredMethods(ParametrizedTestMethodsFilter.java:30)
                                                                       at junitparams.JUnitParamsRunner.getListOfMethods(JUnitParamsRunner.java:498)
                                                                       at junitparams.JUnitParamsRunner.getDescription(JUnitParamsRunner.java:487)
                                                                       at org.junit.runners.Suite.describeChild(Suite.java:123)
                                                                       at org.junit.runners.Suite.describeChild(Suite.java:27)
                                                                       at org.junit.runners.ParentRunner.shouldRun(ParentRunner.java:434)
                                                                       at org.junit.runners.ParentRunner.filter(ParentRunner.java:382)
                                                                       at org.junit.runner.manipulation.Filter.apply(Filter.java:97)
                                                                       at android.support.test.internal.runner.TestRequestBuilder$LenientFilterRequest.getRunner(TestRequestBuilder.java:413)
                                                                       at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
                                                                       at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:58)
                                                                       at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:375)
                                                                       at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
                                                                    Caused by: java.util.regex.PatternSyntaxException: Look-behind pattern matches must have a bounded maximum length near index 40:
                                                                   (?=\{[^\}]{0,50}\})|(?<=\{[^\}]{0,50}\})
                                                                                                           ^
                                                                       at java.util.regex.Pattern.compileImpl(Native Method)
                                                                       at java.util.regex.Pattern.compile(Pattern.java:411)
                                                                       at java.util.regex.Pattern.<init>(Pattern.java:394)
                                                                       at java.util.regex.Pattern.compile(Pattern.java:381)
                                                                       at junitparams.naming.MacroSubstitutionNamingStrategy.<clinit>(MacroSubstitutionNamingStrategy.java:13)
                                                                        ... 19 more

下面是我的构建的一个片段。gradle文件。

androidTestCompile 'pl.pragmatists:JUnitParams:1.1.0'
androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.1'
androidTestCompile 'com.android.support.test:runner:1.0.1'
androidTestCompile 'com.android.support.test:rules:1.0.1'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'

共有2个答案

齐起运
2023-03-14

在较新版本的Studio中,您需要编写:

testImplementation 'pl.pragmatists:JUnitParams:1.1.1'

但不是androidTestImplementation 这不起作用。

邢飞昂
2023-03-14

我们刚刚在JUnitParams中修复了这个问题,并发布了新版本。

现在,您可以获取最新版本,并开始在Android 19及以下版本中使用它!

androidTestCompile'pl.pragmatists: JUnitParams: 1.1.1'

 类似资料:
  • 我有一个有三种不同构建类型的项目:debug、beta和Release。我的测试包总是为调试构建而创建的,但是QA使用的是beta构建,我们希望QA在他们大量的设备上运行这些测试。 我试图为QA创建一个测试apk,该apk由与beta构建相同的密钥签名。翻阅Android-Gradle文档,我没有看到任何东西告诉我不能这样做,但我没有看到任何配置它的东西。我是否可以配置在组装测试APK时使用的密钥

  • 这里的人只是用python展示了这个例子。我不能用同样的例子用java编写代码。 有什么建议吗

  • 我正在VSTS中使用“基于云的ApacheJMeter负载测试”任务执行JMeter脚本。我有一个响应断言作为JMeter测试的一部分。我能够通过VSTS中的发布定义触发测试。当断言失败时,我希望发布失败。目前,发布成功,并发出如下警告: 2018-02-21T18:23:31.1885342Z##[警告][异常] 1次出现['测试'、'HTTP请求'、'网络异常']:请下载测试日志以查看此url

  • 因此,我有一个应用程序,用户可以通过从一组>中进行选择来选择颜色,我使用XML属性为按钮着色,但显然这只适用于/。

  • 我想开发一个部署目标为iOS 6.0的应用程序。如果我只使用Swift,它会工作吗?还是我也需要编写Objective-C代码?

  • 问题内容: 我似乎无法通过测试成功获得PhantomJS。我试图将其集成到我的项目中,但是在此之后失败了,我尝试仅运行基本的Angular Docs示例,但遇到了同样的问题。到目前为止,我的步骤: // … GhostDriver-Main-在端口9515上运行 这是与示例中相同的文件,仅具有browserName,并且seleniumAddress端口已更改: 我收到以下错误消息: 我在gith