我正在测试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不匹配?
答案 0 :(得分:0)
我认为它正在尝试匹配字符串“ abcd”,但是您给出的是字符串[“ abcd”]的列表。