构建SDK时,最好不要更改方法签名,这样就不会破坏任何客户端(包括名称和参数)。如何编写单元测试或单元测试以确保人们在贡献时不会更改Java SDK的方法签名?
答案 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.");
}
}
}
这是一个非常简单的示例,但可以轻松扩展以寻找更复杂的方法签名。