JUnit4: как проверить правильность имени переменной - PullRequest
0 голосов
/ 17 октября 2018

Я новичок в JUnit и пытаюсь настроить автоматическую оценку для курса, который я разрабатываю.

Я хочу убедиться, что учащиеся используют следующие имена переменных:

firstName3, firstName2, firstName1 

В таком порядке, как только они включают его в довольно стандартную строку System.out.println(); в классе Mainи main метод.

Как я могу проверить это в JUnit?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Помимо других ответов: вы смотрите не на тот аспект.

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

Это должно быть вашим первым приоритетом.

Кроме того, действительно (не так уж много) смысла проверять, что код студента имеет определенную структуру.Даже когда вы используете синтаксический анализатор исходного кода Java, у вас будет множество способов правильно решить назначение, которое не имеет (точной) структуры, которую вы ожидаете.Может быть, одному из ваших учеников действительно надоело набирать name1, name2, name3, и он сам полагает, что «есть массивы для таких вещей», и использует это в своем решении.Хотели бы вы наказать его за это?!

Таким образом, вы должны решить эту часть проблемы, к которой она относится: на мета / социальном уровне.

Другими словами: найдите хороший способ для студентов сесть вместе и просмотреть свой кодекс.Вы можете попросить добровольца и представить его работу в классе, а затем поговорить о плюсах и минусах.Или вы создаете небольшие группы, и у вас есть более опытный человек, работающий репетитором.

Не все «технические» проблемы должны решаться с помощью технических решений!

0 голосов
/ 17 октября 2018

На это ответил @ andy-turner в комментариях выше.JUnit не может сделать то, что я ищу.

JUnit - это просто старый Java-код, который вызывает ваш код и помогает вам проверять возвращаемые значения и / или создаваемые исключения.Если вы не можете сказать имена переменных при вызове, JUnit тоже не может.- Энди Тернер

...