Я пишу среду автоматизации тестирования и стараюсь максимально упростить жизнь моих пользователей. Я хотел бы, чтобы мои пользователи просто утверждали, что это обычный тест Junit 5, и запись в журнал (мой экземпляр Log4J), запись отчета (Extent Report) будет выполняться в рамках утверждения.
Итак, я бы хотел делегировать класс org.junit.jupiter.api.Assertions так, чтобы:
assertTrue(myCondition, "My Message");
Сделаю следующее (я скопировал оригинал assertTrue
и добавил свою функциональность):
package org.junit.jupiter.api;
@API(status = STABLE, since = "5.0")
public class Assertions {
//...... Some original org.junit.jupiter.api.Assertions functions
public static void assertTrue(boolean condition, String message) {
try{
AssertTrue.assertTrue(condition, message);
}
catch(AssertionError error){
//Do my things - reporter and logger
throw error;
}
}
//...... Some original org.junit.jupiter.api.Assertions functions
}
Однако
org.junit.jupiter.api.Assertions
- длинный класс для делегирования.
усложняется, поскольку AssertTrue
виден только на уровне пакета.
Хотелось бы получить свежие мысли о том, как решить это элегантно ...
Спасибо,