当在Maven项目中执行mvn install时,如果出现"There are test failures"错误消息,这意味着您的测试用例(unit tests)中至少有一个失败了。Maven会执行测试用例,如果有测试失败,它将中止构建过程。
报错信息:
There are test failures.
Please refer to /Users/liuwuxiang/workspace/code/mystarter-spring-boot-starter/target/surefire-reports for the individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
要解决这个问题,您可以按照以下步骤进行调试和修复:
一旦您修复了测试用例中的问题,再次运行mvn install命令,直到所有测试用例都通过为止。这样,您就可以确保您的项目在构建时不再出现测试失败的问题。
-
查看测试报告:首先,按照错误消息中的建议,查看测试报告以获取有关哪些测试失败的详细信息。在您提供的错误消息中,测试报告位于
/Users/liuwuxiang/workspace/code/mystarter-spring-boot-starter/target/surefire-reports目录下。您可以打开测试报告文件,通常以XML格式提供,也可以点击打开.txt 以查看哪些测试用例失败。
这里就可以直接去对应Java类里面排除 WebLogAutoConfig 错误package com.lwx.mystarter.spring.boot.starter.config; import com.lwx.mystarter.spring.boot.starter.sms.WebLogProperties; import com.lwx.mystarter.spring.boot.starter.weblog.WebLogAspect; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @description 日志切面自动配置类 * @author Lwx * 1.@ConditionalOnProperty(prefix = "zzcloud.weblog",value = "enabled", matchIfMissing = true): * matchIfMissing属性:默认情况下matchIfMissing为false,也就是说如果未进行属性配置,则自动配置不生效。如果matchIfMissing为true, * 则表示如果没有对应的属性配置,则自动配置默认生效。 * * 2.@ConditionalOnMissingBean: * 在@bean定义上,它的作用就是在容器加载它作用的bean时,检查容器中是否存在目标类型(ConditionalOnMissingBean注解的value值)的bean了, * 如果存在这跳过原始bean的BeanDefinition加载动作。 * * @date 2023-10-16 10:25 */ @Configuration @EnableConfigurationProperties({WebLogProperties.class}) @ConditionalOnProperty(prefix = "mystarter.weblog", value = "enabled", matchIfMissing = true) public class WebLogAutoConfig { @Bean public WebLogAspect webLogAspect() { return new WebLogAspect(); } }发现是在配置 WebLogAspect 时,没有添加 @ConditionalOnMissingBean 正确代码为:
package com.lwx.mystarter.spring.boot.starter.config; import com.lwx.mystarter.spring.boot.starter.sms.WebLogProperties; import com.lwx.mystarter.spring.boot.starter.weblog.WebLogAspect; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @description 日志切面自动配置类 * @author Lwx * 1.@ConditionalOnProperty(prefix = "zzcloud.weblog",value = "enabled", matchIfMissing = true): * matchIfMissing属性:默认情况下matchIfMissing为false,也就是说如果未进行属性配置,则自动配置不生效。如果matchIfMissing为true, * 则表示如果没有对应的属性配置,则自动配置默认生效。 * * 2.@ConditionalOnMissingBean: * 在@bean定义上,它的作用就是在容器加载它作用的bean时,检查容器中是否存在目标类型(ConditionalOnMissingBean注解的value值)的bean了, * 如果存在这跳过原始bean的BeanDefinition加载动作。 * * @date 2023-10-16 10:25 */ @Configuration @EnableConfigurationProperties({WebLogProperties.class}) @ConditionalOnProperty(prefix = "mystarter.weblog", value = "enabled", matchIfMissing = true) public class WebLogAutoConfig { @Bean @ConditionalOnMissingBean public WebLogAspect webLogAspect() { return new WebLogAspect(); } }再进行 mvn install 时就可以成功了

-
查看测试代码:查看哪些测试用例失败,然后打开相应的测试类和测试方法。检查测试用例是否正确编写,测试逻辑是否按预期工作。
-
修复测试用例:如果您确定哪些测试用例失败了,尝试修复它们。这可能涉及到修正测试代码中的错误,模拟依赖项或更改测试期望结果等。
-
运行单独的测试:您可以使用Maven命令来运行单个测试类或测试方法,以便更容易找到和解决问题。例如,使用以下命令运行单个测试类:
mvn -Dtest=YourTestClass test或者使用以下命令运行单个测试方法:
mvn -Dtest=YourTestClass#yourTestMethod test这样,您可以专注于单个测试用例的问题。
-
检查依赖项:确保您的项目依赖项是正确配置的,并且所有必要的依赖项都已经解决。有时,测试失败可能是由于依赖项问题引起的。
-
更新插件和依赖项:确保您正在使用的Maven插件和依赖项都是最新版本。有时,测试失败可能是由于旧版本的插件或依赖项引起的。
-
排查测试用例:如果测试用例中没有直接的问题,那么您可能需要排查项目的其他部分,例如配置文件、依赖注入、Mock对象等,以查找潜在的问题。
-
记录日志和异常:在测试用例中添加适当的日志记录和异常处理,以帮助诊断测试失败的原因。
-
最后也可以在pom.xml里面加入如下代码:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin>但是不建议这么做,只有精准定位代码错误并解决才是明智之举;这是因为在pom.xml的<project>里添加了上面的插件配置,使得测试出错时不影响项目的编译。但是代码的坏味道还在问题也还没有根除,只是跃过了测试代码。
在Maven项目执行时出现‘There are test failures’错误,意味着测试用例至少有一个失败,Maven会中止构建。可通过查看测试报告、测试代码,修复测试用例,运行单独测试,检查依赖项等步骤来调试和修复,精准定位并解决代码错误才是明智之举。
6103

被折叠的 条评论
为什么被折叠?



