【发布时间】:2021-10-31 03:11:36
【问题描述】:
我正在创建一个无限制的 Dataflow 管道,并希望确保架构的新版本与旧版本兼容,以便可以在不停止的情况下对其进行更新。如果我的原始对象定义为:
@DefaultSchema(JavaFieldSchema.class)
public class TransactionPojoV1 {
public final String bank;
public final double purchaseAmount;
@SchemaCreate
public TransactionPojoV1(String bank, double purchaseAmount) {
this.bank = bank;
this.purchaseAmount = purchaseAmount;
}
}
我想添加一个新字段fee:
@DefaultSchema(JavaFieldSchema.class)
public class TransactionPojoV2 {
public final String bank;
public final double purchaseAmount;
public final double fee;
@SchemaCreate
public TransactionPojoV2(String bank, double purchaseAmount, double fee) {
this.bank = bank;
this.purchaseAmount = purchaseAmount;
this.fee = fee
}
}
我如何编写一个测试来测试TransactionPojoV2 是否可以从TransactionPojoV1 解码?并确保行为符合预期。
以上内容可能无法通过此测试,不确定,但我想要以下内容:
TransactionPojoV1 transactionPojoV1 = ...
byte[] encoded = Coder.encode(transactionPojoV1);
TransactionPojoV2 transactionPojoV2 = Coder.decode(encoded);
// Assert values are as expected.
我只是不知道该怎么做。
【问题讨论】:
标签: java google-cloud-dataflow apache-beam