При создании SDK лучше всего не менять сигнатуры методов, чтобы вы не разбивали клиентов (включая имя и параметры). Как я могу написать модульные тесты или модульные тесты, чтобы убедиться, что люди не меняют подписи метода моего Java SDK, когда они способствуют этому?Написание теста для предотвращения изменений подписи метода
0
A
ответ
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.");
}
}
}
Это очень простой пример, но может быть легко расширена до искать более сложные сигнатуры методов.
Смежные вопросы
- 1. Junit: написание теста для метода, который удаляет объект?
- 2. Написание модульного теста для триггера
- 3. Цифровые подписи и предотвращения взлома
- 4. Написание метода для факториала
- 5. Написание теста для плагина Maven для фитнеса
- 6. Параметры соответствия для подписи метода
- 7. Написание теста TestUtils для функции без параметров
- 8. Написание модульного теста для одновременного кода C#?
- 9. Написание модульного теста для сохранения модели
- 10. Написание теста rspec для проверки пути формы
- 11. Написание одноуровневого теста для нескольких реализаций интерфейса
- 12. Написание теста интеграции Rails для контроллера поиска
- 13. Написание теста для Dist :: Zilla minting module
- 14. Написание теста Rspec для `User # index`
- 15. Написание теста для case case в Ruby
- 16. Написание модульного теста для игровых веб-сайтов
- 17. написание тест JUnit случае для вызова метода
- 18. Написание тестов NUnit для метода
- 19. Написание оболочки для метода асинхронной
- 20. написание метода для последовательности фибоначчи
- 21. Прослушивание изменений подписи в AngularJs
- 22. Написание единиц измерения для метода __init__ класса
- 23. Возвращение void из метода для предотвращения выполнения
- 24. C# атрибут для предотвращения выполнения метода
- 25. Java предотвращения дублирования метода для различных целей
- 26. Нет подписи метода
- 27. Изменение подписи одного метода
- 28. Нет подписи метода: org.gradle.api.java.archives.internal.DefaultManifest.srcFile()
- 29. Подписи метода Javadoc неверны
- 30. groovy.lang.MissingMethodException: Нет подписи метода
Написать тест, как клиент, который нарушил бы такие изменения? – Mephy