创建日志,我有以下代码:我如何断定我的日志消息时由龙目岛
@Component
@Slf4j
public class MyClass {
private OtherClass otherClass;
@Autowired
public MyClass(OtherClass otherClass) {
this.otherClass = otherClass;
}
public void start() {
try {
otherClass.execute();
} catch (FeatureException exception) {
log.warn(exception.getMessage());
}
}
我想要做的测试,以验证日志消息。 我不知道如何。
感谢
如果您需要验证日志消息,那可能是代码异味。你能详细说明为什么你需要验证日志消息吗? –
@AlastorMoody存在一些需要特定消息的使用案例:客户端请求正确记录此特定消息,因为其他工具期望它;一个项目经理说,我想要100%的代码覆盖率,包括日志语句等。 –
您可以制作一个程序包专用异常(PPE),它扩展了您的FeatureException异常。这个PPE有一个logMessage()方法,它可以构造你想要的消息,而不用询问调用代码的消息。此PPE为您提供所需的日志消息,并且在您的单元测试中可以检查是否引发了包私有异常。来自公共调用者,他们仍然可以捕获FeatureException。这是否能解决您的问题?如果这有效,那么我可以将此评论转换为答案,以便您可以接受它。如果没有,你可以在logMessage上使用assertEquals。 –