在Java中模拟DTO的最佳方法是什么?

Ksh*_*rma 9 java unit-testing mocking dto

在编写单元测试时,我需要一些带有样本数据的对象.例如,假设我有一个Order对象.人们需要编写这样的代码 -

Order o = new Order();
o.setId(3);
o.setAmount(2830.9);

List<Item> items = new ArrayList<Item>();
Item i = new Item();
i.setId(3);
i.setCost(34);
items.add(i);

o.setItems(items);
Run Code Online (Sandbox Code Playgroud)

它比看起来更令人沮丧和冗余,因为真实对象可能有更多的属性和嵌套对象.

如果需要多个订单......

创建模拟数据对象以进行测试的最佳方法是什么?

在我的脑海中,我正在考虑从Json反序列化我的对象.有没有一种标准,有效的方法来做到这一点?

Pet*_*rey 14

一般来说,DTO只包含字段,没有需要模拟的逻辑.

我会用DTO作为自己的模拟.如果DTO中有逻辑,你可能想嘲笑,我会把逻辑移出DTO.

要创建DTO,我会在测试本身或外部文件中从文本中执行此操作.您可以使用JSon,但如果您不使用它,我将使用XMLEncoder/XMLDecoder.它不是很漂亮的XML,但内置它,所以你不需要额外的库.

如果可以,您可以从应用程序的日志中创建DTO,这样您就可以重新创建一个真实的场景.