J напечатайте шаги дважды - PullRequest
0 голосов
/ 30 мая 2019

Я запустил наши тесты Jbehave в IntelliJ, он выводит на консоль, одну вещь, которую я заметил, это каждый шаг истории, который он печатает дважды, пример:

2019-05-30 08:11:09 [pool-19-thread-1] INFO  c.s.c.cassandra.CassandraRepository - Looking in the table member_by_account_id
Then poll MemberByAccountId table for view processor
Then poll MemberByAccountId table for view processor
And verify the MemberByAccountId payload in view table
And verify the MemberByAccountId payload in view table
Given modify ingestion payload to appear older
Given modify ingestion payload to appear older
2019-05-30 08:11:09 [pool-19-thread-1] DEBUG c.s.c.j.m.s.VerifyServiceSteps - published message [{"topic":"/subscriptions","subject":"Message","id":"xxxxx",...}"}}] published date 2019-04-30T15:11:09.584Z 
When publish the payload to ingestion eventHub
When publish the payload to ingestion eventHub
2019-05-30 08:11:09 [pool-19-thread-1] DEBUG c.s.c.j.m.s.VerifyServiceSteps - looking for date 2019-04-30
2019-05-30 08:11:09 [pool-19-thread-1] INFO  c.s.c.cassandra.CassandraRepository - Looking in the table ingest_audit

все записи с INFO / DEBUG взяты из кода Javaиз org.slf4j.Logger, другие записи напечатаны из Jbehave, и вы можете сказать, что каждый шаг печатается дважды.кроме основного потока есть только один поток (pool-19-thread-1).

вот конфигурация для бегуна историй:

public AbstractJbehaveStoryRunner() {
    List<String> filters =
        Arrays.stream(System.getProperty("meta.filter", "").split(","))
            .map(String::trim)
            .collect(Collectors.toList());
    LOGGER.debug("filters------" + filters);

    embedder.useMetaFilters(filters);
    embedder.useTimeoutParsers(timeout);
    this.useEmbedder(embedder);
    initJBehaveConfiguration();
  }

  protected String[] getStepConfigResources() {
    return new String[0];
  }

  private void initJBehaveConfiguration() {
    Class<?> thisClass = this.getClass();

    ExamplesTableFactory examplesTableFactory =
        new ExamplesTableFactory(new LoadFromClasspath(this.getClass()), new TableTransformers());

    useConfiguration(
        new MostUsefulConfiguration()
            .useStoryLoader(new LoadFromClasspath(thisClass.getClassLoader()))
            .usePendingStepStrategy(new FailingUponPendingStep())
            .useStepdocReporter(new PrintStreamStepdocReporter())
            .useStoryReporterBuilder(
                new StoryReporterBuilder()
                    .withReporters(new ConsoleOutput())
                    .withFailureTrace(true)
                    .withCodeLocation(CodeLocations.codeLocationFromClass(thisClass))
                    .withDefaultFormats()
                    .withFormats(Format.CONSOLE, Format.TXT, Format.HTML, Format.XML, Format.STATS)
                    .withCrossReference(new CrossReference()))
            .useParameterConverters(
                new ParameterConverters()
                    .addConverters(
                        new ParameterConverters.DateConverter(new SimpleDateFormat("yyyy-MM-dd"))))
            .useStoryParser(new RegexStoryParser(examplesTableFactory))
            .useStepMonitor(new SilentStepMonitor()));
  } 

и вот конфигурация logback:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <property name="DEV_HOME" value="/root/var/log"/>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>
        %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
      </Pattern>
    </encoder>
  </appender>

  <appender name="FILE-AUDIT"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${DEV_HOME}/debug.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>
        %d{yyyy-MM-dd HH:mm:ss} - %msg%n
      </Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
      </fileNamePattern>
      <maxFileSize>10MB</maxFileSize>
    </rollingPolicy>

  </appender>

  <appender name="FILE-ERROR"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${DEV_HOME}/error.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>
        %d{yyyy-MM-dd HH:mm:ss} - %msg%n
      </Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>${DEV_HOME}/archived/error.%d{yyyy-MM-dd}.%i.log
      </fileNamePattern>
      <maxFileSize>10MB</maxFileSize>
    </rollingPolicy>

  </appender>

  <!-- Send logs to both console and file audit -->
  <logger name="com.starbucks.comptest" level="debug" additivity="false">
    <appender-ref ref="FILE-AUDIT"/>
    <appender-ref ref="STDOUT"/>
  </logger>

  <root level="error">
    <appender-ref ref="FILE-ERROR"/>
  </root>

</configuration>

как я могу удалить этот дублированный шаг печати?

...