我有2个android espresso测试来验证我的UI。testA()添加一个项目列表,并验证项目是否添加成功,然后签出应用。testB()添加项目列表,验证项目添加,然后编辑项目并验证。如果成功,则签出应用。在这里,如果你看一下,testB()重复了testA()的所有步骤,并执行了一些额外的步骤。我想看看是否有办法将测试初始化(也许在setUp()方法中)为一个列表中的元素。因此,在这种情况下,在testA()中成功添加项目后,测试为通过,然后从该点开始testB(),而不是退出应用程序,重新启动并重复testA(),然后做额外的步骤,具体到testB()。
我的代码看起来像这样。
@get:Rule var activityRule = ActivityTestRule(MainActivity::class.java, true, false) @Before @Throws(Exception::class) open fun setUp() { activityRule.launchActivity(null) }
首先,尽量不要有依赖性测试。每一个测试都应该能够通过,不管你是全部运行还是只单独运行一些。
你要找的是最有可能创建一个 setUp()
方法,该方法在每次测试前都会运行,它设置了你的模拟测试数据。在该方法中加入 @Before
以确保在每次测试前都能运行。