diff --git a/proto/decode_test.go b/proto/decode_test.go
index ecdd973..db7c8f9 100644
--- a/proto/decode_test.go
+++ b/proto/decode_test.go
@@ -23,11 +23,10 @@
 )
 
 type testProto struct {
-	desc              string
-	decodeTo          []proto.Message
-	wire              []byte
-	partial           bool
-	invalidExtensions bool
+	desc     string
+	decodeTo []proto.Message
+	wire     []byte
+	partial  bool
 }
 
 func TestDecode(t *testing.T) {
@@ -49,11 +48,6 @@
 				for i := range wire {
 					wire[i] = 0
 				}
-
-				if test.invalidExtensions {
-					// Equal doesn't work on messages containing invalid extension data.
-					return
-				}
 				if !proto.Equal(got, want) {
 					t.Errorf("Unmarshal returned unexpected result; got:\n%v\nwant:\n%v", marshalText(got), marshalText(want))
 				}
@@ -67,10 +61,6 @@
 		if !test.partial {
 			continue
 		}
-		if test.invalidExtensions {
-			// Missing required fields in extensions just end up in the unknown fields.
-			continue
-		}
 		for _, m := range test.decodeTo {
 			t.Run(fmt.Sprintf("%s (%T)", test.desc, m), func(t *testing.T) {
 				got := reflect.New(reflect.TypeOf(m).Elem()).Interface().(proto.Message)
@@ -1255,9 +1245,8 @@
 		})}.Marshal(),
 	},
 	{
-		desc:              "required field in extension message unset",
-		partial:           true,
-		invalidExtensions: true,
+		desc:    "required field in extension message unset",
+		partial: true,
 		decodeTo: []proto.Message{build(
 			&testpb.TestAllExtensions{},
 			extend(testpb.E_TestRequired_Single, &testpb.TestRequired{}),
@@ -1281,9 +1270,8 @@
 		}.Marshal(),
 	},
 	{
-		desc:              "required field in repeated extension message unset",
-		partial:           true,
-		invalidExtensions: true,
+		desc:    "required field in repeated extension message unset",
+		partial: true,
 		decodeTo: []proto.Message{build(
 			&testpb.TestAllExtensions{},
 			extend(testpb.E_TestRequired_Multi, []*testpb.TestRequired{
diff --git a/proto/encode_test.go b/proto/encode_test.go
index cd4a7ef..f90020a 100644
--- a/proto/encode_test.go
+++ b/proto/encode_test.go
@@ -40,11 +40,6 @@
 					t.Errorf("Unmarshal error: %v\nMessage:\n%v", err, marshalText(want))
 					return
 				}
-
-				if test.invalidExtensions {
-					// Equal doesn't work on messages containing invalid extension data.
-					return
-				}
 				if !proto.Equal(got, want) {
 					t.Errorf("Unmarshal returned unexpected result; got:\n%v\nwant:\n%v", marshalText(got), marshalText(want))
 				}
@@ -81,11 +76,6 @@
 					t.Errorf("Unmarshal error: %v\nMessage:\n%v", err, marshalText(want))
 					return
 				}
-
-				if test.invalidExtensions {
-					// Equal doesn't work on messages containing invalid extension data.
-					return
-				}
 				if !proto.Equal(got, want) {
 					t.Errorf("Unmarshal returned unexpected result; got:\n%v\nwant:\n%v", marshalText(got), marshalText(want))
 				}
