如何使用JUnit测试显示Android日志记录输出(使用不带模拟器的本机JUnit)

83qze16e  于 2022-11-11  发布在  Android
关注(0)|答案(2)|浏览(136)

我正在使用JUnit 4编写Android测试用例(这些测试不使用Emulator,而是作为原生测试运行)。在我的代码中,我使用SL 4J进行日志记录,但在运行单元测试时,我无法看到任何日志记录输出。例如,以下语句:

private static final Logger logger = LoggerFactory.getLogger(AClass.class);
  logger.warn("log output not visible in unit test");

是否有可能在单元测试中访问记录器输出?
此致!

ttisahbt

ttisahbt1#

我以前回答过这个问题,但我现在找不到答案的链接。

以下是Android gradle插件解决方案:

android {
  // ...

  testOptions.unitTests.all {
    testLogging {
      events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
    }
  }
}

以下是我用于任何Gradle测试的解决方案:

tasks.withType(Test) {
    testLogging {
        exceptionFormat 'full'
        showCauses true
        showExceptions true
        showStackTraces true
        showStandardStreams true
    }
}
ojsjcaue

ojsjcaue2#

更新后的KotlinDSL版本的@JaredBurrows回答
参考:1
项目build.gradle.kts

import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {...}
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven(url ="https://jitpack.io")
    }

    tasks.withType<Test>().configureEach {
        testLogging {
            events = setOf(
                TestLogEvent.STARTED,
                TestLogEvent.PASSED,
                TestLogEvent.FAILED,
                TestLogEvent.SKIPPED,
                TestLogEvent.STANDARD_OUT,
                TestLogEvent.STANDARD_ERROR
            )

            exceptionFormat = TestExceptionFormat.FULL
            showExceptions = true
            showCauses = true
            showStackTraces = true
        }

        ignoreFailures = false
    }
}

相关问题