diff --git a/cmd/agent/app/reporter/client_metrics_test.go b/cmd/agent/app/reporter/client_metrics_test.go
index 004c84e17f2..64c1edb3d80 100644
--- a/cmd/agent/app/reporter/client_metrics_test.go
+++ b/cmd/agent/app/reporter/client_metrics_test.go
@@ -56,6 +56,7 @@ func testClientMetricsWithParams(params ClientMetricsReporterParams, fn func(tr
 	r1 := testutils.NewInMemoryReporter()
 	zapCore, logs := observer.New(zap.DebugLevel)
 	mb := metricstest.NewFactory(time.Hour)
+	defer mb.Stop()
 
 	params.Reporter = r1
 	params.Logger = zap.New(zapCore)
diff --git a/cmd/agent/app/reporter/connect_metrics_test.go b/cmd/agent/app/reporter/connect_metrics_test.go
index 524752c84c2..d57a445284e 100644
--- a/cmd/agent/app/reporter/connect_metrics_test.go
+++ b/cmd/agent/app/reporter/connect_metrics_test.go
@@ -26,6 +26,7 @@ import (
 
 func TestConnectMetrics(t *testing.T) {
 	mf := metricstest.NewFactory(time.Hour)
+	defer mf.Stop()
 	cm := NewConnectMetrics(mf)
 
 	getGauge := func() map[string]int64 {
diff --git a/cmd/agent/app/reporter/metrics_test.go b/cmd/agent/app/reporter/metrics_test.go
index 59e5d890662..6795781b28f 100644
--- a/cmd/agent/app/reporter/metrics_test.go
+++ b/cmd/agent/app/reporter/metrics_test.go
@@ -102,6 +102,7 @@ func TestMetricsReporter(t *testing.T) {
 
 	for _, test := range tests {
 		metricsFactory := metricstest.NewFactory(time.Microsecond)
+		defer metricsFactory.Stop()
 		r := WrapWithMetrics(test.rep, metricsFactory)
 		test.action(r)
 		metricsFactory.AssertCounterMetrics(t, test.expectedCounters...)
diff --git a/cmd/agent/app/reporter/package_test.go b/cmd/agent/app/reporter/package_test.go
new file mode 100644
index 00000000000..e0c68918bf5
--- /dev/null
+++ b/cmd/agent/app/reporter/package_test.go
@@ -0,0 +1,25 @@
+// Copyright (c) 2023 The Jaeger Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package reporter
+
+import (
+	"testing"
+
+	"go.uber.org/goleak"
+)
+
+func TestMain(m *testing.M) {
+	goleak.VerifyTestMain(m)
+}
diff --git a/pkg/httpmetrics/metrics_test.go b/pkg/httpmetrics/metrics_test.go
index 03f62d30f0b..25371b360a9 100644
--- a/pkg/httpmetrics/metrics_test.go
+++ b/pkg/httpmetrics/metrics_test.go
@@ -22,6 +22,7 @@ import (
 
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
+	"go.uber.org/goleak"
 	"go.uber.org/zap"
 
 	"github.com/jaegertracing/jaeger/internal/metrics/prometheus"
@@ -37,6 +38,7 @@ func TestNewMetricsHandler(t *testing.T) {
 	})
 
 	mb := metricstest.NewFactory(time.Hour)
+	defer mb.Stop()
 	handler := Wrap(dummyHandlerFunc, mb, zap.NewNop())
 
 	req, err := http.NewRequest(http.MethodGet, "/subdir/qwerty", nil)
@@ -56,6 +58,7 @@ func TestNewMetricsHandler(t *testing.T) {
 
 func TestMaxEntries(t *testing.T) {
 	mf := metricstest.NewFactory(time.Hour)
+	defer mf.Stop()
 	r := newRequestDurations(mf, zap.NewNop())
 	r.maxEntries = 1
 	r.record(recordedRequest{
@@ -85,3 +88,7 @@ func TestIllegalPrometheusLabel(t *testing.T) {
 	require.NoError(t, err)
 	handler.ServeHTTP(httptest.NewRecorder(), req)
 }
+
+func TestMain(m *testing.M) {
+	goleak.VerifyTestMain(m)
+}
diff --git a/pkg/recoveryhandler/zap_test.go b/pkg/recoveryhandler/zap_test.go
index dc22bb97b2d..e39c1dff71f 100644
--- a/pkg/recoveryhandler/zap_test.go
+++ b/pkg/recoveryhandler/zap_test.go
@@ -22,6 +22,7 @@ import (
 
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
+	"go.uber.org/goleak"
 
 	"github.com/jaegertracing/jaeger/pkg/testutils"
 )
@@ -45,3 +46,7 @@ func TestNewRecoveryHandler(t *testing.T) {
 		"msg":   "Unexpected error!",
 	}, log.JSONLine(0))
 }
+
+func TestMain(m *testing.M) {
+	goleak.VerifyTestMain(m)
+}