【发布时间】:2021-01-10 19:06:47
【问题描述】:
我有一个与测试数据和测试类结构有关的问题。 我有一个测试类,里面的测试很少。 现在,给定和预期的数据是我为几乎每个测试创建的结构。 我写我的测试看起来像这样:
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");
}
}
您能提出另一种方法吗? 您如何构建测试数据以提高测试的可读性?
【问题讨论】: