编写测试以防止方法签名更改

时间:2015-12-02 02:52:00

标签: java unit-testing testing

构建SDK时,最好不要更改方法签名,这样就不会破坏任何客户端(包括名称和参数)。如何编写单元测试或单元测试以确保人们在贡献时不会更改Java SDK的方法签名?

1 个答案:

答案 0 :(得分:3)

使用java反射,您可以检查类的方法。然后,您可以查找特定签名的方法,如果在类上找不到该方法,则会失败。

例如,要验证是否存在以下方法:

public class SO {

    public Integer foo(String bar) {
        System.out.println("foo");
        return 0;
    }
}

您可以使用以下测试:

public class SOTest {

    @Test
    public void testFooMethodExists() {
        try {
            Class<SO> clazz = SO.class;
            Method method = clazz.getMethod("foo", String.class);
            Class<?> returnClass = method.getReturnType();
            Assert.assertTrue("foo method returns the wrong type.",
                returnClass.equals(Integer.class));
        } catch (NoSuchMethodException | SecurityException e) {
            Assert.fail("foo method is missing.");
        }
    }

}

这是一个非常简单的示例,但可以轻松扩展以寻找更复杂的方法签名。