Как передать параметр Date в аннотацию, а затем проверить его в расширении junit 5? - PullRequest
0 голосов
/ 15 февраля 2019

Так что у меня есть расширение, чтобы пропустить тесты в соответствии с некоторыми условиями.Одним из этих условий должна быть дата, например, целевая дата для исправления, и до этого дня мы пропустим тест:

public class KnownIssueExtension implements ExecutionCondition {
@Override
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {

    Date now = new Date();

    final Optional<Method> testMethod = context.getTestMethod();
    if (testMethod.isPresent()
            && testMethod.get().isAnnotationPresent(KnownIssue.class) && now.before(testMethod.get().getAnnotation(KnownIssue.class).date())) {
        return disabled(testMethod.get().getAnnotation(KnownIssue.class).description());
    }
    return enabled("");
}

Так что я хочу получить текущую дату в виде аннотации как параметр, но я могуНе назначайте значения по умолчанию или что-то вроде этого.

Теперь это выглядит так:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface KnownIssue {
    String description()
            default "Please set the reason for the expected failure like: @KnownIssue(description = \"TPSVC-12345\")";

Date date()
            default "I DONT KNOW WHAT SHOULD BE HERE, I have tried new Date(), but it's not working"

}

1 Ответ

0 голосов
/ 15 февраля 2019

Реализуйте свою аннотацию следующим образом.

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface KnownIssue {

    String since();

    String description() default "";
}

Документируйте, что атрибут since необходим для соответствия стандартному формату даты ISO YYYY-MM-DD.

Затем выполните синтаксический анализ String в java.util.Date (например, через java.text.DateFormat.parse(String)) или в java.time.LocalDate (например, через java.time.LocalDate.parse(CharSequence)).

...