비즈니스 요구 사항을 충족시키기 위해 건너 뛴 테스트에 대해보고하지 않도록 Java 테스트 스위트를 수정하려고합니다.런타임시 후크 또는 수정 클래스
TestNG를 사용하면 사용자 정의 리포터와 수신기를 작성할 수 있지만이 경우 Jenkins 및 SonarQube 인스턴스에서 사용하는 Junit 보고서를 수정하고 싶습니다. TestNG의 코드에 파고
나는이를 참조하십시오
private void initializeDefaultListeners() {
m_testListeners.add(new ExitCodeListener(this));
if (m_useDefaultListeners) {
addReporter(SuiteHTMLReporter.class);
addReporter(Main.class);
addReporter(FailedReporter.class);
addReporter(XMLReporter.class);
if (System.getProperty("oldTestngEmailableReporter") != null) {
addReporter(EmailableReporter.class);
} else if (System.getProperty("noEmailableReporter") == null) {
addReporter(EmailableReporter2.class);
}
addReporter(JUnitReportReporter.class);
if (m_verbose != null && m_verbose > 4) {
addListener(new VerboseReporter("[TestNG] "));
}
}
는 그래서 TestNG를 그렇게 그 클래스는 원하는 효과를 가지고하지 않을 확장, 기본적으로 JUnitReportReporter 수있게되는 것 같습니다.
Java에서 해당 클래스에 연결하여 generateReport 메서드에 필요한 변경을 수행하거나 런타임에 해당 클래스를 수정하는 방법이 있습니까?
testNG 자체에 패치를 적용 할 수는 있지만 지속 가능하거나 좋은 방법으로 보이지 않거나 빌드 자동화 프로세스를 다시 수행 할 수 있지만 다른 팀이 소유하고 있으므로 다른 것을 선호합니다.
리플렉션을 사용할 수 있지만 다시는 좋지 않습니다. 이것을 달성하기위한 "좋은 연습"방법이 없습니다. 프레임 워크를 해킹하거나 다른 곳에서 처리해야합니다 (예 : 건너 뛰지 않고 테스트 제거). – Unihedron