测试的测试数据结构,以提高测试的可读性

问题描述

我有一个与测试数据和测试类结构有关的问题。 我有一个测试班,里面没有几个测试。 现在,给定数据和预期数据是我为几乎每个测试创建的结构。 我写测试看起来像这样:

    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","f");
    }
}

您能提出另一种方法吗? 您如何构造测试数据以提高测试的可读性?

解决方法

一种方法可以将测试数据放在文本,csv类型的文件中。

将测试数据放入文件中将使您有机会使用特定的测试方案来命名文件。最终将增加测试数据的可读性。 这些文件也可以安排在基于测试场景的文件夹结构中。

一旦将测试数据整理到文件中,则可以将这些文件的所有者和维护移交给领域专家,并且可以根据需要直接添加/修改测试数据。

可以创建一个测试数据提供者类,该类将执行从文件中读取测试数据并将其提供给测试的任务。

因此测试只能通过类似这样的API与该供应商类进行通信

公共字符串getTestData(字符串测试方案名称)

如果每个常量上的测试数据没有那么大,可以放入单独的文件中。那么,基于单个json yml的配置文件中每个数据常量都有一个字段就可以完成这项工作。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...