Я тестирую функцию 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
Почему содержимоеInInnyOrder может не совпадать, если выходные данные ясно показывают, что строки совпадают?