使用 selenium webdriver 和 junit5 进行端到端测试的最佳方法是什么?
What is the best approach to do a end-to-end test using selenium webdriver and junit5?
由于 selenium 无法进行 rest 调用测试,并且由于我发现了很多对集成测试的不同解释,所以我无法理解什么是测试我的 spring 启动的正确方法 api 使用 selenium 和 junit5.
举个例子,如果我的前端有一个按钮,当我点击它时会向服务器发送一个 rest 调用,我应该如何测试响应的有效性?最初的想法是进行两次调用,一次使用 selenium,一次使用 MockMvc 并比较响应,但我似乎无法找到一种方法来获取 webdriver 响应。或者我是否必须改为检查前端的一些更改,如果我这样做,它仍然是端到端测试吗?
此外,考虑到我不打算实现每一层抽象(即控制器、服务和存储库),MockMvc 测试方法是否足以使测试符合集成测试的条件,或者它仍然是单元测试?
任何解释或代码示例将不胜感激。
Selenium 和 MockMvc 是两种完全不同的测试。
Selenium 用于端到端测试。您希望从真实人类用户的角度来测试您的软件。因此,我建议您检查 UI 中的更改,因为您的真实用户也不会关心 Rest-Responses。
MockMvc
另一方面 可以 仅用于测试 Spring 应用程序的 Web 层或完整的应用程序及其所有层。两者都是集成测试,但测试范围不同。
在这里,我建议您使用 Springs 测试切片。如果您使用 @WebMvcTest
注释您的测试,则会加载 Spring 上下文,但它仅包含测试 Web 层所需的组件(Controller、RestController、ControllerAdvice、JsonComponents 等)
有关更多信息,请查看 Testing the Web layer.
上的 springs 自己的教程
由于 selenium 无法进行 rest 调用测试,并且由于我发现了很多对集成测试的不同解释,所以我无法理解什么是测试我的 spring 启动的正确方法 api 使用 selenium 和 junit5.
举个例子,如果我的前端有一个按钮,当我点击它时会向服务器发送一个 rest 调用,我应该如何测试响应的有效性?最初的想法是进行两次调用,一次使用 selenium,一次使用 MockMvc 并比较响应,但我似乎无法找到一种方法来获取 webdriver 响应。或者我是否必须改为检查前端的一些更改,如果我这样做,它仍然是端到端测试吗?
此外,考虑到我不打算实现每一层抽象(即控制器、服务和存储库),MockMvc 测试方法是否足以使测试符合集成测试的条件,或者它仍然是单元测试?
任何解释或代码示例将不胜感激。
Selenium 和 MockMvc 是两种完全不同的测试。
Selenium 用于端到端测试。您希望从真实人类用户的角度来测试您的软件。因此,我建议您检查 UI 中的更改,因为您的真实用户也不会关心 Rest-Responses。
MockMvc
另一方面 可以 仅用于测试 Spring 应用程序的 Web 层或完整的应用程序及其所有层。两者都是集成测试,但测试范围不同。
在这里,我建议您使用 Springs 测试切片。如果您使用 @WebMvcTest
注释您的测试,则会加载 Spring 上下文,但它仅包含测试 Web 层所需的组件(Controller、RestController、ControllerAdvice、JsonComponents 等)
有关更多信息,请查看 Testing the Web layer.