构建项目时单元测试是手动执行还是自动执行?

Are unit tests only manually executed or auto executed when building out a project?

关于在 React Native 中使用 Jest 进行单元测试,我有几个问题。

  1. 我 运行 我的测试现在用 npm test,这是 运行 的唯一方法还是在构建项目时也正在执行测试?如果是这样,我可以禁用自动测试吗?

  2. 如果测试失败,是否会阻止应用程序构建或执行?

  3. 如果测试在 iOS 和 Android 上失败或成功,行为是否有任何差异?

例子

下面的代码只是测试 AsyncStorage 是否按预期工作。如果以下测试失败 - 如果我在应用程序中使用 AsyncStorage 肯定不会工作,但它会阻止应用程序被完全使用吗?

beforeEach(() => {
 AsyncStorage.clear();
});

it('Test - Read AsyncStorage', async () => {
  await AsyncStorage.setItem('username', 'testUser')
  let usernameValue = await AsyncStorage.getItem('username')
  expect(usernameValue).toBe('testUser')
});

我很高兴得到任何进一步的提示 - 我只是找不到上述问题的具体答案,所以在此先感谢,而且我还没有真正进行过太多单元测试,所以对此很陌生。

  1. 构建项目时不会执行测试。如果您使用的是 CICD 平台,它可能会 运行 npm 命令来构建您的项目,然后 运行 在构建成功完成后进行测试。然而,您可能需要自己配置它,因为构建和测试在默认情况下是专门完成的。

  2. 失败的测试不会阻止您的应用程序构建和执行。这只是表明某些逻辑可能不会按照您想要的方式运行。如果您使用的是 CICD 平台并且您的测试失败,通常 jestjs 在遇到故障时会发出 1 的错误代码,这将导致您的管道失败。

  3. react-native 的重点是尽可能与平台无关。因此,失败的 jestjs 测试将对所有平台产生相同的影响。