像下面这样的东西.
我想要一种方法来跳过我的dao测试.试图避免定义套件的开销.
使用CI,我希望每晚有一个运行所有测试,另一个5分钟的SCM调查仅运行"快速"测试.
mvn -DskipPattern=**.dao.** test
Run Code Online (Sandbox Code Playgroud) 我们的测试环境有各种依赖中间件的集成测试(CMS平台,底层数据库,Elasticsearch索引).
它们是自动化的,我们使用Docker管理我们的中间件,因此我们没有不可靠网络的问题.但是,有时我们的数据库崩溃,我们的测试失败.
问题是这种失败的检测是通过一连串的org.hibernate.exception.JDBCConnectionException消息.这些是通过超时发生的.当发生这种情况时,我们最终会遇到数百个因此异常而失败的测试,每个测试都需要几秒钟才能失败.因此,我们的测试需要一个年龄才能完成.实际上,当我们意识到它们已经完成时,我们通常会手动终止这些构建.
我的问题:在Maven驱动的Java测试环境中,有没有办法指导构建系统注意特定类型的异常并杀死整个过程,如果它们到达(或达到某种阈值)?
我们可以监视我们的容器并以这种方式杀死构建过程,但我希望有一种更清洁的方式来实现它与maven.
我希望 Maven 在遇到第一个错误时停止尝试运行我的 JUnit Spring 测试。这可能吗?
我的测试类如下所示,我将它们作为标准 Maven 目标运行。
@ContextConfiguration(locations = {"classpath:/spring-config/store-persistence.xml","classpath:/spring-config/store-security.xml","classpath:/spring-config/store-service.xml", "classpath:/spring-config/store-servlet.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
public class SkuLicenceServiceIntegrationTest
{
...
Run Code Online (Sandbox Code Playgroud)
如果 Spring 配置中存在错误,则每个测试都会尝试重新启动 Spring 上下文,这每次需要 20 秒。这意味着我们很长时间都没有发现任何测试失败,因为它会在得出构建失败的结论之前尝试运行全部测试!
我正在使用maven surefire插件来执行我的应用程序的junit测试.
我想在第一次失败或错误后停止执行.在我的例子中,这些是修改应用程序状态的集成测试,因此我需要知道失败后的确切系统状态(如果执行隔离,我们会遇到一个测试通过的奇怪问题,但如果在整个套件中执行则没有).
可能吗?我在这里的插件文档中找不到一个选项.