Ver código fonte

[공통][New] 네트워크 연결을 확인 클래스 테스트

hyodong.min 7 anos atrás
pai
commit
b5b14037fd

+ 32 - 8
app/src/main/java/kr/co/zumo/app/lifeplus/network/NetworkStatus.java

@@ -21,6 +21,16 @@ import kr.co.zumo.app.lifeplus.application.App;
  */
 public class NetworkStatus {
 
+  public static final String TYPE_WIFI = "WIFI";
+  public static final String TYPE_WIMAX = "WIMAX";
+  public static final String TYPE_MOBILE = "MOBILE";
+
+  NetworkInfo networkInfo;
+
+  public NetworkStatus() {
+    networkInfo = getNetworkInfo();
+  }
+
   /**
    * wifi, mobile 등 네트워크에 연결 되었는지 확인
    *
@@ -30,7 +40,7 @@ public class NetworkStatus {
     boolean isConnected;
 
     try {
-      isConnected = getNetworkInfo().isConnected();
+      isConnected = (null != networkInfo && networkInfo.isConnected());
     } catch (Exception e) {
       e.printStackTrace();
       isConnected = false;
@@ -48,7 +58,9 @@ public class NetworkStatus {
     int type = -1;
 
     try {
-      type = getNetworkInfo().getType();
+      if (null != networkInfo) {
+        type = networkInfo.getType();
+      }
     } catch (Exception e) {
       e.printStackTrace();
     }
@@ -66,13 +78,13 @@ public class NetworkStatus {
     String type = null;
     switch (connectedType) {
       case ConnectivityManager.TYPE_WIFI:
-        type = "WIFI";
+        type = TYPE_WIFI;
         break;
       case ConnectivityManager.TYPE_WIMAX:
-        type = "WIMAX";
+        type = TYPE_WIMAX;
         break;
       case ConnectivityManager.TYPE_MOBILE:
-        type = "MOBILE";
+        type = TYPE_MOBILE;
         break;
       default:
         break;
@@ -80,8 +92,20 @@ public class NetworkStatus {
     return type;
   }
 
-  private NetworkInfo getNetworkInfo() throws RuntimeException {
-    ConnectivityManager manager = (ConnectivityManager) App.getInstance().getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-    return manager.getActiveNetworkInfo();
+  private NetworkInfo getNetworkInfo() {
+
+    ConnectivityManager manager = null;
+    NetworkInfo networkInfo = null;
+
+    try {
+      manager = (ConnectivityManager) App.getInstance().getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+    } catch (Exception e) {
+//      e.printStackTrace();
+    }
+
+    if (null != manager) {
+      networkInfo = manager.getActiveNetworkInfo();
+    }
+    return networkInfo;
   }
 }

+ 58 - 0
app/src/test/java/kr/co/zumo/app/lifeplus/network/NetworkStatusTest.java

@@ -0,0 +1,58 @@
+package kr.co.zumo.app.lifeplus.network;
+
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertTrue;
+import static org.powermock.api.mockito.PowerMockito.when;
+
+/**
+ * NetworkStatusTest
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 9. 18.]   [최초 작성]
+ * @since 2018. 9. 18.
+ */
+//@RunWith(RobolectricTestRunner.class)
+public class NetworkStatusTest {
+
+  @Mock
+  NetworkInfo networkInfo;
+
+  @InjectMocks
+  NetworkStatus networkStatus;
+
+  @Before
+  public void setUp() throws Exception {
+    MockitoAnnotations.initMocks(this);
+  }
+
+  @Test
+  public void isConnected() {
+    when(networkInfo.isConnected()).thenReturn(true);
+    assertTrue(networkStatus.isConnected());
+  }
+
+  @Test
+  public void getConnectedType() {
+    when(networkInfo.getType()).thenReturn(ConnectivityManager.TYPE_MOBILE);
+    assertEquals(ConnectivityManager.TYPE_MOBILE, networkStatus.getConnectedType());
+  }
+
+  @Test
+  public void getTypeString() {
+    assertEquals(NetworkStatus.TYPE_MOBILE, networkStatus.getTypeString(ConnectivityManager.TYPE_MOBILE));
+    assertEquals(NetworkStatus.TYPE_WIFI, networkStatus.getTypeString(ConnectivityManager.TYPE_WIFI));
+    assertEquals(NetworkStatus.TYPE_WIMAX, networkStatus.getTypeString(ConnectivityManager.TYPE_WIMAX));
+  }
+}