Skip to content
This repository has been archived by the owner on Jan 21, 2023. It is now read-only.

alkedr/reporting-matchers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reporting-matchers

Maven Central Build Status

Примеры кода

Создание матчера

static ReportingMatcher<? super User> isCorrectUser() {
    return merge(
            field("id", 123),   // проверки для полей и методов
            field("login", "login"),
            field("password", "drowssap"),
            getter("getNames"
                    , field("first", startsWith("qwe"), endsWith("rty"))
                    , field("middle", equalTo("123456"))
                    , field("last", is("ytrewq"))
            ),
            method(invocation("getArray")
                    , arrayElement(0, 1)
                    , array(containsInAnyOrder(1, 2, 3))
            ),
            displayAll(getters())   // добавляет *все* геттеры в отчёт, даже непроверенные
    );
}

Использование матчера

Если подробный отчёт не нужен, то можно воспользоваться обычным assertThat.

assertThat(myUser, isCorrectUser);

Если нужен подробный отчёт, то нужно написать отдельный метод, который будет запускать матчер, генерировать отчёт и сохранять/выводить его куда-нибудь.

public static <T> void reportingAssertThat(T item, ReportingMatcher<T> reportingMatcher) {
    StringBuilder htmlReportStringBuilder = new StringBuilder();
    MatchesFlagRecordingSimpleTreeReporter matchesFlagRecordingReporter = Reporters.matchesFlagRecordingReporter();
    try (CloseableSimpleTreeReporter htmlReporter = Reporters.htmlReporter(htmlReportStringBuilder)) {
        reportingMatcher.run(
                item,
                Reporters.simpleTreeReporterToSafeTreeReporter(
                        Reporters.compositeSimpleTreeReporter(
                                matchesFlagRecordingReporter,
                                htmlReporter
                        )
                )
        );
    }

    // htmlReportStringBuilder содержит подробный отчёт, его нужно куда-то сохранить

    if (!matchesFlagRecordingReporter.getMatchesFlag()) {
        throw new AssertionError(...);
    }
}

reportingAssertThat(myUser, isCorrectUser);

В автотестах маркета этот метод называется ru.yandex.autotests.market.common.steps.AssertSteps.reportingAssertThat.

Публичные классы, которые интересны всем, кто использует эту библиотеку

  • com.github.alkedr.matchers.reporting.ReportingMatcher - интерфейс, расширяющий org.hamcrest.Matcher, добавляет методы, которые запускают проверки и строят отчёт.
  • com.github.alkedr.matchers.reporting.ReportingMatchers - аналог org.hamcrest.Matchers, содержит static factory method'ы для всех матчеров.
  • com.github.alkedr.matchers.reporting.reporters.Reporters - содержит static factory method'ы для всех репортеров.
  • com.github.alkedr.matchers.reporting.sub.value.extractors.SubValueCheckers - содержит static factory method'ы для объектов, которые нужно передавать в static factory method'ы матчеров для массивов, Iterable'ов и Iterator'ов.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages