【问题标题】:Reducing number of lines of code in test class (Builder - Factory pattern)减少测试类中的代码行数(生成器 - 工厂模式)
【发布时间】:2015-12-24 02:18:48
【问题描述】:

我正在编写包含大量测试用例 (50+) 的集成测试类。我必须在每个测试方法中创建多个不同类型的对象。由于每个测试中有大量测试方法和多个对象创建,我的测试类变得非常庞大。我需要有关如何使其不那么冗长和易于理解的建议。

到目前为止我所做的 - 我需要创建的对象很复杂。例如,对象 A 具有对象 B,对象 B 具有对象 C 的列表,其中对象 C 具有字段 - 值。我需要创建一个值为 5 的对象 A 的实例。所以我将所有这些代码移动到另一个类,并使用方法 - buildWithValue() 将其称为 ABuilder。现在在测试类中,我只需执行 Abuilder.buildWithValue(5)。这从主测试类中删除了一些代码。

但是现在我有多个这样的builder BBuilder,CBuilder。我应该将所有这些构建器移到一个抽象构建器还是什么的?像 GenericBuilder 这样的东西作为输入 Builder 类型和其他参数来构建一个对象,即使我这样做,行数也不会减少太多。

那么,我可以这样做吗 - 使用接受三个值(不同数据类型)的方法创建一个通用构建器 - 我的 ABuilder、BBuilder 和 CBuilder 所需的 value1、value2、value3。这样做我的测试方法将只有一行 GenericBuild.createObjects(A1,B1,C1)

或者我应该根据某些标准将测试类分成两部分吗?

请推荐

【问题讨论】:

  • 你为什么不在类中创建一个函数来创建一个A类对象。在我看来,创建一个仅用于测试目的的类不是一个好方法。

标签: java integration-testing builder factory-pattern


【解决方案1】:

除了构建器模式之外,我还允许将嵌套对象构造和持久化为 JSON、XML 或任何人类和机器可读的格式。您可以轻松地在文本编辑器中创建新对象,将文本文件放在 /src/test/resources 文件夹中(例如,如果您使用 maven)并根据测试用例的需要构建它们。

【讨论】:

  • 您能否详细说明您所说的意思 - 您可以在文本编辑器中轻松创建新对象,将文本文件放在 /src/test/resources 文件夹中。可能是一个小例子
  • 就我个人而言,为此目的,我发现 Java 代码比 JSON 或 XML 更具可读性(更不用说更灵活、强大、类型安全和高性能);只需设计一组不错的帮助类/方法来创建数据并在测试中使用它们。
  • @Rogério 这就是我的观点。 JSON 只是为了更轻松地编辑数据
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
相关资源
最近更新 更多