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

标签 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);

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

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

创建用于测试的模拟数据对象的最佳方法是什么?

我突然想到要从 Json 中反序列化我的对象。是否有标准、有效的方法来执行此操作?

最佳答案

通常 DTO 只包含字段,没有需要模拟的逻辑。

我会使用 DTO 作为自身的模拟。如果 DTO 中有逻辑,您可能想模拟出来,我会将逻辑移出 DTO。

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

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

关于java - 在 Java 中模拟 DTO 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12454855/

相关文章:

java - c#中的静态导入

java - 使用 mapstruct 映射嵌套对象

java - 如何确定哪个网络。接口(interface)与java一起使用

java - 如何根据 Maven 阶段(安装或测试)在 DAO 类中使用不同的持久性单元?

asp.net - 使用 Moq 对 View 属性进行单元测试

testing - 最新的 Groovy 稳定版本令人费解的问题

java - 将 xml 字符串作为文档传递返回 null

java - 任何(MyClass.class)实际上只匹配传递类类型的类?

java - Mockito:如何验证一个方法只被调用一次,使用精确的参数忽略对其他方法的调用?

c++ - 是否可以将 MS 单元测试从 EXE 转发到 DLL?