Поймать нерешенные ошибки компиляции в Java - PullRequest
4 голосов
/ 25 октября 2011

В настоящее время я помощник учителя для класса, использующего Java.Я пытаюсь написать фрагмент кода, который будет проверять, чтобы убедиться, что методы студента верны, но часто студент даже не реализует метод, или они назовут его чем-то неправильным, что, очевидно, приведет к нерешенной проблеме.Проблема компиляции при запуске моего тестового кода.Есть ли способ отловить эту ошибку во время выполнения, чтобы мой тестовый код мог выполняться без необходимости играть с кодом, представленным студентом?

  • edit: только что обнаружил, что нерешенная проблема компиляциигенерируется компилятором до выполнения.Имея это в виду, есть ли способ сделать то, что я объяснил выше?
  • edit: Кроме того, я не имею никакого контроля над тем, как структурируются назначения, поэтому я не могу представить интерфейсы илизаглушки и т. д.

Ответы [ 4 ]

2 голосов
/ 25 октября 2011

Если вы используете рефлексию, вы можете проверить, существует ли метод, вызвать методы и выполнить итерацию по существующим методам, чтобы найти метод студента.

См. Класс UrlClassLoader для загрузки кода студента из файла.

2 голосов
/ 25 октября 2011

Если бы я был ТА, я бы написал несколько тестовых заданий и попросил бы студентов сдать этот экзамен.Получить их в тестирование на ранней стадии.

Если код не компилируется, не имеет смысла обнаруживать это во время выполнения.Вы не можете запустить, если он не скомпилируется.

1 голос
/ 25 октября 2011

Похоже, вы уже вошли в объектную часть вашего курса. Я думаю, что было бы неплохо создать суперкласс, у которого все назначенные методы были бы заглушены. Затем ученики могут просто расширить этот суперкласс и реализовать методы. Ваши заглушки должны просто генерировать RuntimeException, что приведет к сбою соответствующих модульных тестов. Это должно позволить вам создавать модульные тесты, так как вам придется слишком беспокоиться о том, что учащиеся не реализуют определенные методы.

1 голос
/ 25 октября 2011

Если я понимаю ваш вопрос, вы пытаетесь проверить как интерфейс, который реализует учащийся, так и правильность реализации. API отражения позволил бы определить, реализовал ли класс правильный API, и если это так, вызвать этот API. Посмотрите на java.lang.Class, java.lang.Method и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...