diff --git a/cluster/router/condition/default_health_check_test.go b/cluster/router/condition/default_health_check_test.go
index f576a928afb48f08c166da20be2935b057ac131c..0a7f24392191d48a31ea93bd088f47c918257833 100644
--- a/cluster/router/condition/default_health_check_test.go
+++ b/cluster/router/condition/default_health_check_test.go
@@ -15,6 +15,7 @@ import (
 )
 
 func TestDefaultHealthChecker_IsHealthy(t *testing.T) {
+	defer protocol.CleanAllStatus()
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	hc := NewDefaultHealthChecker(&url).(*DefaultHealthChecker)
 	invoker := NewMockInvoker(url, 1)
@@ -49,7 +50,7 @@ func TestDefaultHealthChecker_IsHealthy(t *testing.T) {
 }
 
 func TestDefaultHealthChecker_getCircuitBreakerSleepWindowTime(t *testing.T) {
-
+	defer protocol.CleanAllStatus()
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	defaultHc := NewDefaultHealthChecker(&url).(*DefaultHealthChecker)
 	// Increase the number of failed requests
@@ -75,10 +76,10 @@ func TestDefaultHealthChecker_getCircuitBreakerSleepWindowTime(t *testing.T) {
 	request(url1, "test", 1, false, false)
 	sleepWindowTime = defaultHc.getCircuitBreakerSleepWindowTime(protocol.GetURLStatus(url1))
 	assert.True(t, sleepWindowTime > 0 && sleepWindowTime < MAX_CIRCUIT_TRIPPED_TIMEOUT)
-
 }
 
 func TestDefaultHealthChecker_getCircuitBreakerTimeout(t *testing.T) {
+	defer protocol.CleanAllStatus()
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	defaultHc := NewDefaultHealthChecker(&url).(*DefaultHealthChecker)
 	timeout := defaultHc.getCircuitBreakerTimeout(protocol.GetURLStatus(url))
@@ -97,6 +98,7 @@ func TestDefaultHealthChecker_getCircuitBreakerTimeout(t *testing.T) {
 }
 
 func TestDefaultHealthChecker_isCircuitBreakerTripped(t *testing.T) {
+	defer protocol.CleanAllStatus()
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	defaultHc := NewDefaultHealthChecker(&url).(*DefaultHealthChecker)
 	status := protocol.GetURLStatus(url)
@@ -112,6 +114,7 @@ func TestDefaultHealthChecker_isCircuitBreakerTripped(t *testing.T) {
 }
 
 func TestNewDefaultHealthChecker(t *testing.T) {
+	defer protocol.CleanAllStatus()
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	defaultHc := NewDefaultHealthChecker(&url).(*DefaultHealthChecker)
 	assert.NotNil(t, defaultHc)
diff --git a/cluster/router/condition/health_check_route_test.go b/cluster/router/condition/health_check_route_test.go
index 23a11ab1b5168f8f5bee1fa6441923508725b93c..d345f199496189b0f7e1ea8ab4409e0b277dd17f 100644
--- a/cluster/router/condition/health_check_route_test.go
+++ b/cluster/router/condition/health_check_route_test.go
@@ -15,6 +15,7 @@ import (
 )
 
 func TestHealthCheckRouter_Route(t *testing.T) {
+	defer protocol.CleanAllStatus()
 	consumerURL, _ := common.NewURL("dubbo://192.168.10.1/com.ikurento.user.UserProvider")
 	consumerURL.SetParam(HEALTH_ROUTE_ENABLED_KEY, "true")
 	url1, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
@@ -86,6 +87,7 @@ func contains(invokers []protocol.Invoker, invoker protocol.Invoker) bool {
 }
 
 func TestNewHealthCheckRouter(t *testing.T) {
+	defer protocol.CleanAllStatus()
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	hcr, _ := NewHealthCheckRouter(&url)
 	h := hcr.(*HealthCheckRouter)
diff --git a/protocol/rpc_status.go b/protocol/rpc_status.go
index fa044d71d163850c19f7bafddd082367c1c7129d..13be47c98ece1cc006250ad49ab2b9a8c3b1f625 100644
--- a/protocol/rpc_status.go
+++ b/protocol/rpc_status.go
@@ -167,3 +167,17 @@ func endCount0(rpcStatus *RPCStatus, elapsed int64, succeeded bool) {
 func CurrentTimeMillis() int64 {
 	return time.Now().UnixNano() / int64(time.Millisecond)
 }
+
+// Destroy is used to clean all status
+func CleanAllStatus() {
+	delete1 := func(key interface{}, value interface{}) bool {
+		methodStatistics.Delete(key)
+		return true
+	}
+	methodStatistics.Range(delete1)
+	delete2 := func(key interface{}, value interface{}) bool {
+		serviceStatistic.Delete(key)
+		return true
+	}
+	serviceStatistic.Range(delete2)
+}
diff --git a/protocol/rpc_status_test.go b/protocol/rpc_status_test.go
index ffdb3b535667f32e96c3af2be84851655abf5954..5a07f44eab0db60ba65a155d6c6190ab4ce2d716 100644
--- a/protocol/rpc_status_test.go
+++ b/protocol/rpc_status_test.go
@@ -14,7 +14,7 @@ import (
 )
 
 func TestBeginCount(t *testing.T) {
-	defer destroy()
+	defer CleanAllStatus()
 
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	BeginCount(url, "test")
@@ -28,7 +28,7 @@ func TestBeginCount(t *testing.T) {
 }
 
 func TestEndCount(t *testing.T) {
-	defer destroy()
+	defer CleanAllStatus()
 
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	EndCount(url, "test", 100, true)
@@ -41,7 +41,7 @@ func TestEndCount(t *testing.T) {
 }
 
 func TestGetMethodStatus(t *testing.T) {
-	defer destroy()
+	defer CleanAllStatus()
 
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	status := GetMethodStatus(url, "test")
@@ -50,7 +50,7 @@ func TestGetMethodStatus(t *testing.T) {
 }
 
 func TestGetUrlStatus(t *testing.T) {
-	defer destroy()
+	defer CleanAllStatus()
 
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	status := GetURLStatus(url)
@@ -59,7 +59,7 @@ func TestGetUrlStatus(t *testing.T) {
 }
 
 func Test_beginCount0(t *testing.T) {
-	defer destroy()
+	defer CleanAllStatus()
 
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	status := GetURLStatus(url)
@@ -68,7 +68,7 @@ func Test_beginCount0(t *testing.T) {
 }
 
 func Test_All(t *testing.T) {
-	defer destroy()
+	defer CleanAllStatus()
 
 	url, _ := common.NewURL("dubbo://192.168.10.10:20000/com.ikurento.user.UserProvider")
 	request(url, "test", 100, false, true)
@@ -129,23 +129,10 @@ func request(url common.URL, method string, elapsed int64, active, succeeded boo
 }
 
 func TestCurrentTimeMillis(t *testing.T) {
-	defer destroy()
+	defer CleanAllStatus()
 	c := CurrentTimeMillis()
 	assert.NotNil(t, c)
 	str := strconv.FormatInt(c, 10)
 	i, _ := strconv.ParseInt(str, 10, 64)
 	assert.Equal(t, c, i)
 }
-
-func destroy() {
-	delete1 := func(key interface{}, value interface{}) bool {
-		methodStatistics.Delete(key)
-		return true
-	}
-	methodStatistics.Range(delete1)
-	delete2 := func(key interface{}, value interface{}) bool {
-		serviceStatistic.Delete(key)
-		return true
-	}
-	serviceStatistic.Range(delete2)
-}