Harmony folks, Here on Android, we've been running Harmony's test suite on our devices. The extensive test suite includes many large test methods that exercise many behaviors. For example, consider this test method from StringBuffer2Test.java:
public void test_insertI$CII() { // Test for method java.lang.StringBuffer // java.lang.StringBuffer.insert(int, char [], int, int) char[] c = new char[]{'n', 'o', 't', ' '}; testBuffer.insert(8, c, 0, 4); assertEquals("This is not a test buffer", testBuffer.toString()); StringBuffer buf1 = new StringBuffer("abcd"); try { buf1.insert(-1, (char[]) null, 0, 0); fail("Should throw StringIndexOutOfBoundsException"); } catch (StringIndexOutOfBoundsException e) { //expected } try { testBuffer.insert(testBuffer.length() - 1, c, -1, 1); } catch (StringIndexOutOfBoundsException e) { //expected } } This tests that the behavior of insert() is consistent with the spec. But it also tests which exception is thrown when multiple arguments are incorrect. That behavior is not specified, but Harmony tests it to ensure that implementation behaviors are consistent with those in the RI. I'd like to split this into two test methods. We Androids want to pass every test for behavior that's specified. But we're not as concerned with implementation details like exception priority. Splitting it into two tests makes it possible for us to manage the most important tests. For another example, InetAddressTest.test_getAllByNameLjava_lang_String() covers null handling, security managers, and IPv4 vs. IPv6 addresses. For this test I'd like to move the SecurityManager testing to a separate method. I'm planning on starting into this work beginning on Monday the 9th. If you'd rather I didn't, please let me know! Cheers, Jesse from Android