У JUnit есть какое-то странное ограничение в 30 символов на имя вашего класса? - PullRequest
3 голосов
/ 21 сентября 2009

У меня есть класс, который я сделал для некоторых юнит-тестов. Все шло гладко, пока я не изменил название класса в соответствии с классом, который я тестировал, с суффиксом TestCase. Внезапно, каждый раз, когда я пытался запустить тестовый пример в Eclipse, я получал «Нет входной конфигурации для этого типа».

Кто-то тогда предположил, что для имени класса существует ограничение в 30 символов. Я посмотрел на название класса, и оно было длиной 32 символа. Затем я удалил два символа с конца и попробовал снова, и все заработало. Я положил их обратно, и он перестал работать.

Есть ли объяснение этому?

EDIT:

В ответ на некоторые комментарии. Это Galileo, использующий Windows XP, JUnit 4.4.

РЕДАКТИРОВАТЬ 2:

Извините, ребята. Я думаю, я был неправ. Похоже, что шаблону JUnit / Eclipse не нравится, когда моим именем класса является TestCase. Как только я убираю часть TestCase, она работает. Это работает с массивно длинной последовательностью, короткими последовательностями и всем между ними. Имя может быть любым, например ABCTestCase, просто НЕ МОЖЕТ быть по какой-то причине TestCase.

Ответы [ 4 ]

1 голос
/ 31 декабря 2009

Оказывается, это потому, что я расширял TestCase, который заставляет бегуна JUnit думать, что это все еще версия 3. Даже если вы скажете ему использовать версию 4.

1 голос
/ 22 сентября 2009

По умолчанию я считаю, что бегуны JUnit настроены на поиск * тестовых файлов, поэтому он отфильтрует TestCase. Люди часто используют * TestCase в качестве базового класса без каких-либо собственных тестов. Не уверен, что это то, с чем вы столкнулись. Если так, это настраивается в бегуне.

0 голосов
/ 21 сентября 2009

Проверьте свою конфигурацию запуска в Run -> Run ... Ваш тест имеет конфигурацию там. Проверьте поле «Тестовый класс».

0 голосов
/ 21 сентября 2009

Я не уверен, что это вообще связано с каким-то ограничением длины ОС, а скорее с:

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

alt text

С Подсказка: JUnit: Тип ввода конфигурации запуска не существует

Если вы получаете указанное выше сообщение об ошибке в Eclipse IDE во время выполнения тестового примера, просто убедитесь, что у вас есть тестовый класс как часть определения «eclipse source folder».

Самый простой способ. Щелкните правой кнопкой по папке -> Build Path -> Use as source folder


Возможна проблема с ограничением длины (некоторые проекты претерпевают рефакторинг «для ограничения размера файла» (org.eclipse.jdt.core.tests.performance).

Но это странно, учитывая, что ограничение длины в Windows :

  • 32767 символов для максимальной длины командной строки для функции CreateProcess. Это ограничение исходит из структуры UNICODE_STRING. CreateProcess является основной функцией для создания процессов, поэтому, если вы говорите напрямую с Win32, то это единственное ограничение, о котором вам нужно беспокоиться. Но если вы достигаете CreateProcess каким-либо другим способом, то путь, по которому вы идете, может иметь другие ограничения.
  • 8192 ограничение длины строки в символьной командной строке, установленное CMD.EXE .
  • 2048 длина из-за ограничения длины командной строки INTERNET_MAX_URL_LENGTH (около 2048), наложенного функциями ShellExecute/Ex . (Если вы работаете в Windows 95, тогда ограничение составляет MAX_PATH.)
  • 32767 символов для максимального размера вашей среды (включает все имена переменных плюс все значения)

Может быть, общая длина javac command превышает одно из этих ограничений и не может скомпилировать один из этих классов Java JUnit , что означает, что он больше не может быть выполнен (и вызвать указанное выше сообщение об ошибке )

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