【发布时间】:2014-11-28 14:22:49
【问题描述】:
我的 DTO 课程是:
public class EmailResponse {
// Make public to avoid getters and setters
public Email email;
public RequestData reqData;
public EmailResponse() {
super();
}
}
我想实现这个接口:
public interface IAssertionErrorDo {
public void onErrorDo();
}
但我想在执行期间执行此操作,我不想触摸“EmailResponse”,因为它们不属于同一层,因此无法实现该接口,我的意思是,EmailResponse 会属于服务层,IAssertionError 属于测试层。我正在使用TestNG。
你知道我该怎么做吗?问候
编辑: 我的实现是这样的:
EmailResponse emailResponse = emailService.getUserEmail(userId);
而我想做这种“注射”的原因是因为我有
public class LoggingAssert
extends Assertion {
private static final Logger LOGGER = LoggerFactory.getLogger(LoggingAssert.class);
private IAssertionErrorDo dataE;
@Override
public void onAssertFailure(IAssert a, AssertionError ex) {
LOGGER.info("[ERROR] " + a.getMessage());
if (this.dataE != null) {
this.dataE.onErrorDo();
}
}
public LoggingAssert setOnErrorDo(IAssertionErrorDo object) {
this.object = object;
return this;
}
}
loggingAssert.setOnErrorDo(emailResponse).assertNotNull(emailResponse.getEmail().getId(),
"Checking created email doesn't exists");
所以我想如果断言失败从 emailResponse 执行方法 onErrorDo()
【问题讨论】: