Spock-高质量单元测试实操篇
spock的介绍
<img src="https://tva1.sinaimg.cn/large/008eGmZEgy1gmipihftrbj30xc0gi764.jpg" style="zoom:25%;" />
spock与junit等单元测试框架一样都是java生态内比较流行的单元测试框架,不同点在于spock基于groovy动态语言,这使得spock相较于传统Java单元测试框架具备了更强的动态能力,从语法风格来比较 spock 单元测试的语义性更强,代码本身更能简洁直观的体现出测试用例。下对spock与传统java单元测试进行对比。
传统的java单元测试
@Test
public void testVersionFilter() {
PowerMockito.mockStatic(CurrentScope.class, CommonWebScope.class);
PowerMockito.when(CurrentScope.appVer()).thenReturn(AppVer.of("4.0.0"));
PowerMockito.when(CurrentScope.clientId()).thenReturn(ClientId.ANDROID);
PowerMockito.when(CommonWebScope.appType()).thenReturn(AppType.ANDROID_CN );
TestResource resource;
// 在android ios 最小版本之上
resource = TestResource.builder()
.androidMinVersion("3.0.0")
.androidMaxVersion("6.0.0")
.iosMinVersion("4.0.0")
.iosMaxVersion("4.0.0")
.build();
Assertions.assertThat(resource.isValid()).isEqualTo(true);
// 在android ios 最小版本之上 android 在最大版本上
resource = TestResource.builder()
.androidMinVersion("3.0.0")
.androidMaxVersion("4.0.0")
.iosMinVersion("4.0.0")
.iosMaxVersion("4.0.0")
.build();
Assertions.assertThat(resource.isValid()).isEqualTo(false);
// 在android 最小版本之下 ios之上
resource = TestResource.builder()
.androidMinVersion("7.0.0")
.iosMinVersion("3.0.0")
.build();
Assertions.assertThat(resource.isValid()).isEqualTo(false);
PowerMockito.when(CurrentScope.appVer()).thenReturn(AppVer.of("5.0.0"));
PowerMockito.when(CurrentScope.clientId()).thenReturn(ClientId.IPHONE