Detox 是一个用于移动端 APP 灰盒测试(介于白盒测试和黑盒测试之间,既关注内部逻辑实现,也关注软件最终效果,但关注度不及两者,通常在集成测试阶段进行)的自动化测试框架。
下面是登录界面的测试,就像真实用户一样在设备/模拟器上运行:
describe('Login flow', () => {
it('should login successfully', async () => {
await device.reloadReactNative();
await element(by.id('email')).typeText('john@example.com');
await element(by.id('password')).typeText('123456');
await element(by.text('Login')).tap();
await expect(element(by.text('Welcome'))).toBeVisible();
await expect(element(by.id('email'))).toNotExist();
});
});
特性
- 跨平台:用 JavaScript 编写跨平台测试,目前支持 iOS 和安卓。
- 支持在设备上运行(iOS 尚不支持):像真实用户一样在设备/模拟器上测试应用程序
- 自动化 Synchronized:可监视应用程序中的异步操作
- 专为 CI 打造:在 Travis 等 CI 平台上执行端到端测试
- 独立的测试运行器:使用 Jest、Mocha、AVA 或任何其他喜爱的 JavaScript 测试运行器
-
可调试:使用现代
async
-await
API,使异步测试中的断点按预期工作