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); PowerMockito