diff --git a/bigquery/trace_integration_test.go b/bigquery/trace_integration_test.go
index e3a3aaf00ca5..0e6e40a63641 100644
--- a/bigquery/trace_integration_test.go
+++ b/bigquery/trace_integration_test.go
@@ -20,6 +20,7 @@ import (
 	"testing"
 	"time"
 
+	traceinternal "cloud.google.com/go/internal/trace"
 	"go.opencensus.io/trace"
 )
 
@@ -49,11 +50,20 @@ func (te *testExporter) hasSpans(names []string) []string {
 	return unmatched
 }
 
-func TestIntegration_Tracing(t *testing.T) {
+func TestIntegration_OpenCensusTracing(t *testing.T) {
 	if client == nil {
 		t.Skip("Integration tests skipped")
 	}
 
+	if !traceinternal.IsOpenCensusTracingEnabled() {
+		t.Logf("enabling opencensus tracing")
+		traceinternal.SetOpenTelemetryTracingEnabledField(false)
+		defer func() {
+			t.Logf("enabling otel tracing")
+			traceinternal.SetOpenTelemetryTracingEnabledField(true)
+		}()
+	}
+
 	ctx := context.Background()
 
 	for _, tc := range []struct {
@@ -85,15 +95,17 @@ func TestIntegration_Tracing(t *testing.T) {
 			wantSpans: []string{"bigquery.tables.get", "cloud.google.com/go/bigquery.Table.Metadata"},
 		},
 	} {
-		exporter := &testExporter{}
-		trace.RegisterExporter(exporter)
-		traceCtx, span := trace.StartSpan(ctx, "testspan", trace.WithSampler(trace.AlwaysSample()))
-		tc.callF(traceCtx)
-		span.End()
-		trace.UnregisterExporter(exporter)
+		t.Run(tc.description, func(t *testing.T) {
+			exporter := &testExporter{}
+			trace.RegisterExporter(exporter)
+			traceCtx, span := trace.StartSpan(ctx, "testspan", trace.WithSampler(trace.AlwaysSample()))
+			tc.callF(traceCtx)
+			span.End()
+			trace.UnregisterExporter(exporter)
 
-		if unmatched := exporter.hasSpans(tc.wantSpans); len(unmatched) > 0 {
-			t.Errorf("case (%s): unmatched spans: %s", tc.description, strings.Join(unmatched, ","))
-		}
+			if unmatched := exporter.hasSpans(tc.wantSpans); len(unmatched) > 0 {
+				t.Errorf("case (%s): unmatched spans: %s", tc.description, strings.Join(unmatched, ","))
+			}
+		})
 	}
 }