You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android测试类中@Test方法未按定义顺序执行的解决方法

解决JUnit测试方法不按定义顺序执行的问题

原因

JUnit 4默认会随机化测试方法的执行顺序,目的是推动开发者编写无依赖的独立测试,但你的测试场景需要按特定流程执行(登录→检查工作计划状态→重试获取工作计划),所以默认行为不符合需求。

解决方案

使用JUnit 4的@FixMethodOrder注解指定执行顺序:

  1. 导入必要的类:
import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
  1. 在测试类MainScreenTest上添加@FixMethodOrder(MethodSorters.JVM)注解:
@LargeTest
@RunWith(AndroidJUnit4ClassRunner.class)
@FixMethodOrder(MethodSorters.JVM) // 添加这行
public class MainScreenTest {
    // ... 原有类内容保持不变
}

MethodSorters.JVM会按照方法在字节码中的顺序执行,也就是你在代码里定义的顺序。如果担心不同JVM版本可能带来的顺序差异,也可以修改测试方法名,让它们的字母顺序和期望执行顺序一致,再使用MethodSorters.NAME_ASCENDING,比如改成:

  • test01_loginIsSuccessfull()
  • test02_isWorkPlanReady()
  • test03_getWorkPlanWhenNotReady()

额外提示

你的测试存在明显依赖关系:只有登录成功后,后续的工作计划相关测试才有意义。当前写法如果顺序不对,后续测试会直接失败。更合理的优化方向:

  • 将登录操作放到@Before方法中,确保每个测试执行前都完成登录并进入MainActivity;
  • 或者将这三个步骤整合到同一个测试方法中,作为一个完整的业务流程测试。

内容的提问来源于stack exchange,提问作者saber javadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:45:08