diff --git a/user/test/com/google/gwt/emultest/java/util/ObjectsTest.java b/user/test/com/google/gwt/emultest/java/util/ObjectsTest.java
index 0ff1de8..3015149 100644
--- a/user/test/com/google/gwt/emultest/java/util/ObjectsTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/ObjectsTest.java
@@ -15,6 +15,8 @@
  */
 package com.google.gwt.emultest.java.util;
 
+import com.google.gwt.junit.DoNotRunWith;
+import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 
 import java.util.Comparator;
@@ -75,21 +77,20 @@
     assertTrue(Objects.deepEquals(intArray1, intArray3));
   }
 
+  @DoNotRunWith(Platform.Devel) // Objects.equals(String, String)
   public void testEquals() {
     assertTrue(Objects.equals(null, null));
+    assertFalse(Objects.equals(null, "not null"));
+    assertFalse(Objects.equals("not null", null));
+    assertTrue(Objects.equals("a", "a"));
+    assertFalse(Objects.equals("a", "b"));
+
     assertFalse(Objects.equals(new Object(), new Object()));
 
     Object obj = new Object();
     assertTrue(Objects.equals(obj, obj));
   }
 
-  public void testStringEquality() {
-    assertTrue(Objects.equals("a", "a"));
-    assertFalse(Objects.equals("a", "b"));
-    assertFalse(Objects.equals(null, "not null"));
-    assertFalse(Objects.equals("not null", null));
-  }
-
   public void testHashCode() {
     assertEquals(0, Objects.hashCode(null));
     Object obj = new Object();
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/application/ValidationRequirementGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/application/ValidationRequirementGwtTest.java
index f290c91..4b1d9ce 100644
--- a/user/test/org/hibernate/jsr303/tck/tests/constraints/application/ValidationRequirementGwtTest.java
+++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/application/ValidationRequirementGwtTest.java
@@ -15,6 +15,8 @@
  */
 package org.hibernate.jsr303.tck.tests.constraints.application;
 
+import com.google.gwt.junit.DoNotRunWith;
+import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 
 /**
@@ -35,6 +37,7 @@
     return "org.hibernate.jsr303.tck.tests.constraints.application.TckTest";
   }
 
+  @DoNotRunWith(Platform.Devel) // Objects.equals(String, String)
   public void testClassLevelConstraints() {
     delegate.testClassLevelConstraints();
   }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/GroupSequenceIsolationGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/GroupSequenceIsolationGwtTest.java
index 44fdf68..e8a4c56 100644
--- a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/GroupSequenceIsolationGwtTest.java
+++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/GroupSequenceIsolationGwtTest.java
@@ -15,6 +15,8 @@
  */
 package org.hibernate.jsr303.tck.tests.constraints.groups.groupsequenceisolation;
 
+import com.google.gwt.junit.DoNotRunWith;
+import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 
 import org.hibernate.jsr303.tck.util.client.NonTckTest;
@@ -30,11 +32,13 @@
     return "org.hibernate.jsr303.tck.tests.constraints.groups.groupsequenceisolation.TckTest";
   }
 
+  @DoNotRunWith(Platform.Devel) // Objects.equals(String, String)
   public void testCorrectDefaultSequenceContainedCaseWithGroupRedefinitionOnContainedEntity() {
     delegate
         .testCorrectDefaultSequenceContainedCaseWithGroupRedefinitionOnContainedEntity();
   }
 
+  @DoNotRunWith(Platform.Devel) // Objects.equals(String, String)
   public void testCorrectDefaultSequenceContainedCaseWithoutGroupRedefinitionOnContainedEntity() {
     delegate
         .testCorrectDefaultSequenceContainedCaseWithoutGroupRedefinitionOnContainedEntity();
