我正在尝试为涉及current_timestamp函数的SparkSql编写单元测试:
这是我要测试的方法:
protected Dataset<Row> convertInput(Dataset<Row> inputData){
return sparkSession.sql("select a+1, b+2, current_timestamp as updated_at");
}
而且我想按如下方法测试方法:
@Test
public void testConvertInput() {
Dataset<Row> input = fromJson("test1_input.json");
Dataset<Row> expected = fromJson("test1_output.json");
Dataset<Row> output = convertInput(input);
DatasetAssert.assertSets(expected, output);
}
该断言由于时间戳比较而失败。
我试图将current_timestamp
列添加到输入数据集,但是并不能涵盖我的所有用例。
current_timestamp
的列来解决它>@Test
public void testConvertInput() {
Timestamp mockTime = Timestamp.from(Instant.parse("2020-01-10T12:00:00.000Z"));
Dataset<Row> input = fromJson("test1_input.json").withColumn("current_timestamp", lit(mockTime));
Dataset<Row> expected = fromJson("test1_output.json");
Dataset<Row> output = convertInput(input);
DatasetAssert.assertSets(expected, output);
}