Index: applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoGlyphTest.java
===================================================================
--- applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoGlyphTest.java	(revision 31793)
+++ applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoGlyphTest.java	(revision 31795)
@@ -3,7 +3,6 @@
 import static org.junit.Assert.assertEquals;
 
-import java.lang.reflect.Constructor;
-
 import org.junit.Test;
+import org.openstreetmap.josm.plugins.mapillary.utils.TestUtil;
 
 public class TrafficoGlyphTest {
@@ -17,12 +16,7 @@
   }
 
-  /**
-   * The following test has the only purpose to provide code coverage for the private constructor.
-   */
   @Test
-  public void testPrivateConstructor() throws Exception {
-    Constructor<?> c = TrafficoGlyph.class.getDeclaredConstructors()[0];
-    c.setAccessible(true);
-    c.newInstance();
+  public void testUtilityClass() {
+    TestUtil.testUtilityClass(TrafficoGlyph.class);
   }
 
Index: applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoSignTest.java
===================================================================
--- applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoSignTest.java	(revision 31795)
+++ applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoSignTest.java	(revision 31795)
@@ -0,0 +1,27 @@
+package org.openstreetmap.josm.plugins.mapillary.traffico;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import org.junit.Test;
+import org.openstreetmap.josm.plugins.mapillary.utils.TestUtil;
+
+public class TrafficoSignTest {
+
+  @Test
+  public void test() {
+    assertArrayEquals(null, TrafficoSign.getSign("de", ""));
+    TrafficoSignElement[] trafficSignals = TrafficoSign.getSign("de", "traffic-signals-ahead");
+    assertNotEquals(null, trafficSignals);
+    assertEquals(5, trafficSignals.length);
+    assertArrayEquals(null, TrafficoSign.getSign("us", ""));
+    assertArrayEquals(null, TrafficoSign.getSign("xyz", ""));
+  }
+
+  @Test
+  public void testUtilityClass() {
+    TestUtil.testUtilityClass(TrafficoSign.class);
+  }
+
+}
Index: applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/utils/TestUtil.java
===================================================================
--- applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/utils/TestUtil.java	(revision 31793)
+++ applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/utils/TestUtil.java	(revision 31795)
@@ -1,4 +1,10 @@
 package org.openstreetmap.josm.plugins.mapillary.utils;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 
 import org.openstreetmap.josm.Main;
@@ -41,3 +47,29 @@
   }
 
+  /**
+   * This method tests utility classes for common coding standards (exactly one constructor that's private,
+   * only static methods, …) and fails the current test if one of those standards is not met.
+   * This is inspired by http://stackoverflow.com/questions/4520216 .
+   * @param c the class under test
+   */
+  public static void testUtilityClass(final Class<?> c) {
+    try {
+      // class must be final
+      assertTrue(Modifier.isFinal(c.getModifiers()));
+      // with exactly one constructor
+      assertEquals(1, c.getDeclaredConstructors().length);
+      final Constructor<?> constructor = c.getDeclaredConstructors()[0];
+      // constructor has to be private
+      assertTrue(!constructor.isAccessible() && Modifier.isPrivate(constructor.getModifiers()));
+      constructor.setAccessible(true);
+      // Call private constructor for code coverage
+      constructor.newInstance();
+      for (Method m : c.getMethods()) {
+        // Check if all methods are static
+        assertTrue(m.getDeclaringClass() != c || Modifier.isStatic(m.getModifiers()));
+      }
+    } catch (Exception e) {
+      assertTrue(e.getMessage(), false);
+    }
+  }
 }
