PAssert与字符串不匹配

时间:2019-03-21 01:26:56

标签: google-cloud-dataflow apache-beam

我正在测试Google Cloud Dataflow Pipeline功能,如下所示:

@Test
  public void testOutputExceptionsToFile() {
    Logger logger = (Logger) LoggerFactory.getLogger(EligibilityQueryRunner.class);
    ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
    listAppender.start();

    // add the appender to the logger
    logger.addAppender(listAppender);

    // Create test data
    TableRow[] inputTrs = new TableRow[]{TestFixtures.campaignTableRow3};

    // Create an input PCollection.
    PCollection<TableRow> input = p.apply(Create.of(Arrays.asList(inputTrs)));

    // Apply the Count transform under test.
    PCollectionTuple output = input.apply(new RunQueriesTransform());
    PCollection<String> strs = output.get(exceptionOutput);

    Assert.assertTrue(output.has(exceptionOutput));

    List<String> outputList = Arrays.asList("abcd");

    PAssert.that(strs).containsInAnyOrder(outputList);

    // Run the pipeline.
    p.run().waitUntilFinish();

  }

但是,测试失败,显示以下输出:

[error] Expected: iterable over ["abcd"] in any order
[error]      but: Not matched: "abcd", took 4.712 sec
[error]     at org.apache.beam.sdk.testing.PAssert$PAssertionSite.capture(PAssert.java:168)
[error]     at org.apache.beam.sdk.testing.PAssert.that(PAssert.java:392)
[error]     at org.apache.beam.sdk.testing.PAssert.that(PAssert.java:384)
[error]     at 

当输出清楚显示字符串相同时,为什么containsInAnyOrder不匹配?

1 个答案:

答案 0 :(得分:0)

我认为它正在尝试匹配字符串“ abcd”,但是您给出的是字符串[“ abcd”]的列表。