求助:为何CircleCI未显示MyAppTest.java的测试结果?
我之前也碰到过类似的问题,大概率是你的测试类根本没被执行起来,下面是几个常见的排查方向,你可以逐一核对:
测试类的注解或结构不规范
首先确认MyAppTest类有没有配置正确的测试注解:类上需要添加@RunWith(JUnit4.class)(或者适配你所用测试框架的运行器),每个测试方法必须标注@Test注解。要是少了这些,JUnit不会把它识别为测试类,自然不会执行。举个正确的示例结构:import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class MyAppTest { @Test public void verifyMyAppCoreLogic() { // 你的测试代码逻辑 } }测试文件放错了目录
Android单元测试(对应你运行的testDebugUnitTest/testReleaseUnitTest任务)必须放在src/test/java/目录下,仪器化测试才会放在src/androidTest/java/。如果MyAppTest不小心放到了main目录或者仪器化测试目录,单元测试任务根本找不到它。你可以对照ExampleUnitTest的路径,确认两者是否在同一目录下。CircleCI构建配置过滤了测试
打开你的.circleci/config.yml文件,检查测试阶段的命令有没有指定只运行特定测试。比如如果有类似./gradlew testDebugUnitTest --tests "com.myapp.android.ExampleUnitTest"的命令,那只会执行ExampleUnitTest,MyAppTest会被排除在外。你可以去掉这个--tests参数,或者改成更宽泛的匹配规则,比如--tests "com.myapp.android.*Test"。测试被主动忽略了
检查MyAppTest类或方法上有没有@Ignore注解,这个注解会让测试框架直接跳过该测试。另外也看看build.gradle里的testOptions配置,有没有设置排除规则,比如excludeClasses 'com.myapp.android.MyAppTest',这类配置也会导致测试不被执行。测试执行时出现隐性错误
虽然日志显示0 failures,但也有可能MyAppTest在初始化阶段就崩溃了(比如依赖缺失、类加载失败),导致测试框架没正确记录结果。你可以在CircleCI的构建日志里搜索MyAppTest关键词,看看有没有相关的错误堆栈信息。
内容的提问来源于stack exchange,提问作者president

