|
@@ -0,0 +1,126 @@
|
|
|
|
+package net.mooctest.www.android_auto_test.ServiceImpl;
|
|
|
|
+
|
|
|
|
+import net.mooctest.www.android_auto_test.common.constant.enums.DeviceRunningStatus;
|
|
|
|
+import net.mooctest.www.android_auto_test.common.constant.enums.TraceStatus;
|
|
|
|
+import net.mooctest.www.android_auto_test.dao.RedisMappers.DeviceRunningStatusMap;
|
|
|
|
+import net.mooctest.www.android_auto_test.dao.RedisMappers.Trace2DeviceMap;
|
|
|
|
+import net.mooctest.www.android_auto_test.dao.RedisMappers.TraceStatusMap;
|
|
|
|
+import net.mooctest.www.android_auto_test.models.Device;
|
|
|
|
+import net.mooctest.www.android_auto_test.services.Impl.TraceServiceImpl;
|
|
|
|
+import net.mooctest.www.android_auto_test.vo.DeviceStatusResult;
|
|
|
|
+import org.junit.Assert;
|
|
|
|
+import org.junit.Before;
|
|
|
|
+import org.junit.Test;
|
|
|
|
+import org.junit.runner.RunWith;
|
|
|
|
+import org.mockito.InjectMocks;
|
|
|
|
+import org.mockito.Mock;
|
|
|
|
+import org.mockito.MockitoAnnotations;
|
|
|
|
+import org.powermock.api.mockito.PowerMockito;
|
|
|
|
+import org.powermock.core.classloader.annotations.PrepareForTest;
|
|
|
|
+import org.powermock.modules.junit4.PowerMockRunner;
|
|
|
|
+import org.springframework.boot.test.context.SpringBootTest;
|
|
|
|
+
|
|
|
|
+import java.io.BufferedWriter;
|
|
|
|
+import java.io.File;
|
|
|
|
+import java.io.FileWriter;
|
|
|
|
+import java.util.Arrays;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+import static org.mockito.Mockito.*;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@SpringBootTest
|
|
|
|
+@RunWith(PowerMockRunner.class) // 这是必须的
|
|
|
|
+@PrepareForTest({File.class,
|
|
|
|
+ FileWriter.class,
|
|
|
|
+ BufferedWriter.class,
|
|
|
|
+ TraceServiceImpl.class})
|
|
|
|
+public class TraceServiceTest {
|
|
|
|
+
|
|
|
|
+ @Mock
|
|
|
|
+ TraceStatusMap traceStatusMap;
|
|
|
|
+
|
|
|
|
+ @Mock
|
|
|
|
+ Trace2DeviceMap trace2DeviceMap;
|
|
|
|
+
|
|
|
|
+ @Mock
|
|
|
|
+ DeviceRunningStatusMap deviceRunningStatusMap;
|
|
|
|
+
|
|
|
|
+ @InjectMocks
|
|
|
|
+ TraceServiceImpl traceService = new TraceServiceImpl();
|
|
|
|
+
|
|
|
|
+ List<Device> devices;
|
|
|
|
+
|
|
|
|
+ @Before
|
|
|
|
+ public void setUp(){
|
|
|
|
+ MockitoAnnotations.initMocks(this);
|
|
|
|
+ Device d1 = new Device();
|
|
|
|
+ d1.setUdid("d1");
|
|
|
|
+ Device d2 = new Device();
|
|
|
|
+ d2.setUdid("d2");
|
|
|
|
+ devices = Arrays.asList(d1, d2);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void testUpdateTraceStatus(){
|
|
|
|
+ // arrange
|
|
|
|
+ doNothing().when(traceStatusMap).put("traceId", TraceStatus.FAILED);
|
|
|
|
+ // action
|
|
|
|
+ traceService.updateTraceStatue("traceId", TraceStatus.FAILED);
|
|
|
|
+ // assert
|
|
|
|
+ verify(traceStatusMap).put("traceId",TraceStatus.FAILED );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void testGetTraceStatus(){
|
|
|
|
+ // arrange
|
|
|
|
+ when(traceStatusMap.get("traceId")).thenReturn(TraceStatus.FAILED);
|
|
|
|
+ // action
|
|
|
|
+ TraceStatus ts = traceService.getTraceStatue("traceId");
|
|
|
|
+ // assert
|
|
|
|
+ Assert.assertEquals(ts, TraceStatus.FAILED);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void testSetDeviceList(){
|
|
|
|
+ // arrange
|
|
|
|
+ List<String> ds = devices.stream().map(Device::getUdid).collect(Collectors.toList());
|
|
|
|
+ doNothing().when(trace2DeviceMap).put("id", ds);
|
|
|
|
+ // action
|
|
|
|
+ traceService.setTraceDevices("id", devices);
|
|
|
|
+ // assert
|
|
|
|
+ verify(trace2DeviceMap).put("id", ds);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void testGetDeviceList(){
|
|
|
|
+ // arrange
|
|
|
|
+ when(trace2DeviceMap.get("id")).thenReturn(devices.stream().map(Device::getUdid).collect(Collectors.toList()));
|
|
|
|
+ when(deviceRunningStatusMap.get("d1","id")).thenReturn(DeviceRunningStatus.FINISH);
|
|
|
|
+ when(deviceRunningStatusMap.get("d2","id")).thenReturn(DeviceRunningStatus.RUNNING);
|
|
|
|
+ // action
|
|
|
|
+ List<DeviceStatusResult> re = traceService.getTraceDeviceStatus("id");
|
|
|
|
+ // assert
|
|
|
|
+ Assert.assertEquals(2, re.size());
|
|
|
|
+ Assert.assertEquals(DeviceRunningStatus.FINISH.getCode(), re.get(0).getStatusCode());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void testUpdateTraceStartTime() throws Exception {
|
|
|
|
+ // arrange
|
|
|
|
+ File f = PowerMockito.mock(File.class);
|
|
|
|
+ FileWriter fw = PowerMockito.mock(FileWriter.class);
|
|
|
|
+ BufferedWriter bw = PowerMockito.mock(BufferedWriter.class);
|
|
|
|
+
|
|
|
|
+ PowerMockito.whenNew(File.class).withAnyArguments().thenReturn(f);
|
|
|
|
+ PowerMockito.whenNew(FileWriter.class).withAnyArguments().thenReturn(fw);
|
|
|
|
+ PowerMockito.whenNew(BufferedWriter.class).withAnyArguments().thenReturn(bw);
|
|
|
|
+ doNothing().when(bw).write(anyString());
|
|
|
|
+ doNothing().when(bw).close();
|
|
|
|
+ // action
|
|
|
|
+ traceService.updateTraceStartTime("id");
|
|
|
|
+ // assert
|
|
|
|
+ verify(bw, times(1)).write(anyString());
|
|
|
|
+ }
|
|
|
|
+}
|