我有一个与测试数据和测试类结构相关的问题。我有一个测试类,里面有几个测试。现在,给定和预期的数据是我为几乎所有测试创建的结构。我把我的测试写成这样:
private static final List<String> EXPECTED_DATA = List.of("a","b","c","d","e","f");
@Test
void shouldReturnAttributes() {
Service service = new Service();
List<String> actualData = service.doSomething();
assertThat(actualData).containsExactlyInAnyOrderElementsOf(TestData.EXPECTED_DATA);
}目前,我将测试类开头的测试数据设置为常量。一旦添加了更多的测试,更多的常量开始出现在测试类的开头,导致大量向下滚动以到达实际的测试。因此,一个朋友提出了一个想法,如果常量不在测试类的顶部,测试将更具可读性。从多个测试类中使用的测试数据被移动到CommonTestData类中,而仅从特定类中使用的其余测试数据我们按如下方式组织它们。
我们将它们移动到私有静态类TestData中,代码如下所示:
class ProductAttributeServiceTest {
@Test
void shouldReturnAttributes() {
Service service = new Service();
List<String> actualData = service.doSomething();
assertThat(actualData).containsExactlyInAnyOrderElementsOf(EXPECTED_DATA);
}
private static class TestData {
private static final List<String> EXPECTED_DATA = List.of("a","b","c","d","e","f");
}
}你能提出另一种方法吗?您如何组织您的测试数据以提高测试可读性?
发布于 2020-10-23 01:56:43
一种方法是将测试数据放在文本、csv类型的文件中。
将测试数据放入文件中将有机会为具有特定测试场景的文件命名。这最终将为测试数据增加更多的可读性。并且这些文件也可以被安排在基于测试场景的文件夹结构中。
一旦测试数据被安排到文件中,这些文件的所有者、运输和维护就可以转移给领域专家,并且可以根据需要直接添加/修改测试数据。
可以创建一个测试数据提供者类,它将执行从文件中读取测试数据并提供给测试的任务。
所以测试只能通过API与这个supplier类进行通信,
公共string getTestData(string测试场景名称)
如果每个常量的测试数据不是放在单独的文件中那么大的话..则单个基于json yml的配置文件将完成这项工作,其中每个数据常量具有一个字段。
https://stackoverflow.com/questions/64047294
复制相似问题