Как вы проверяете типобезопасность вашего обобщенного API?

Вы можете использовать, например, JUnit для проверки функциональности вашей библиотеки, но как вы проверяете ее типобезопасность в отношении универсальных шаблонов и подстановочных знаков?

Только тестирование против кодов, которые компилируются, - это "счастливый путь" тестирования; не следует ли вам также протестировать свой API на предмет небезопасного использования и подтвердить, что эти коды НЕ компилируются?

   // how do you write and verify these kinds of "tests"?

    List<Number> numbers = new ArrayList<Number>();
    List<Object> objects = new ArrayList<Object>();

    objects.addAll(numbers); // expect: this compiles

    numbers.addAll(objects); // expect: this does not compile

Итак, как вы убедитесь, что ваш универсальный API повышает правильные ошибки во время компиляции? Вы просто создаете набор, не компилирующий код, чтобы протестировать свою библиотеку, и считаете ошибку компиляции успешной, и наоборот? (Конечно, вы должны подтвердить, что ошибки связаны с обобщениями

Существуют ли фреймворки, которые облегчают такое тестирование?

5
задан polygenelubricants 7 July 2011 в 04:09
поделиться