Неисследованные тесты - PullRequest
       74

Неисследованные тесты

31 голосов
/ 23 сентября 2008

При запуске всех моих тестов в Eclipse (Eclipse 3.4 «Ganymede») один тест указывается в разделе «Unrooted Tests». Я использую Junit 3.8, и этот конкретный тест расширяет TestCase. Я не вижу разницы между этим тестом и другими тестами. Я не помню, чтобы это происходило в Eclipse 3.3 (Европа).

Пояснение:

Мы еще не перешли на JUnit 4.0, поэтому мы не используем аннотации. Я также погуглил, и казалось, что у большинства людей были проблемы с JUnit 4, но я не видел никаких решений. В этот момент тест проходит как локально, так и в CruiseControl, так что я не слишком обеспокоен, но любопытен.

Когда я впервые увидел это, он прошел неудачный тест, который провалился только при запуске с другими тестами. Это привело меня вниз по кроличьей норе в поисках решения проблемы «Unrooted», которую я так и не нашел. В конце концов я нашел виновника в другом тесте, который не был должным образом разрушен.

Я согласен, это похоже на проблему Eclipse.

Ответы [ 21 ]

21 голосов
/ 29 апреля 2009

Наконец я нашел решение. Проблема в том, что вы не определяете свои контрольные примеры с помощью аннотаций, но все еще делаете это «по-старому». Как только вы перейдете к использованию аннотаций, вы сможете снова запускать один тест за раз.

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

import static org.junit.Assert.*; // Notice the use of "static" here
import org.junit.Before;
import org.junit.Test;

public class MyTests { // Notice we don't extent TestCases anymore

  @Before
  public void setUp() { // Note: It is not required to call this setUp()
    // ...
  }

  @Test
  public void doSomeTest() { // Note: method need not be called "testXXX"
    // ...
    assertTrue(1 == 1);
  }
}
16 голосов
/ 14 июня 2011

Я тоже получал сообщение об ошибке «unrooted tests», и оно волшебным образом исчезало. Я считаю, что это было связано с тем, что я использовал Eclipse с проектом Maven. Когда я добавил новый метод в свой класс Test и дал ему аннотацию @Test, он начал получать сообщение об ошибке, когда пытался запустить этот метод с помощью параметра меню «Выполнить как тест Junit»; однако, как только я запустил сборку maven, сообщение unrooted tests исчезло, и я считаю, что это решение проблемы в будущем.

Запустите сборку maven, поскольку она обновит класс, который использует JUnit.

12 голосов
/ 12 ноября 2008

Если ваш класс расширяет TestCase где-то в его иерархии, вы должны использовать тестовый прогон JUnit 3, указанный в раскрывающемся списке под конфигурациями запуска. Использование бегуна JUnit 4 (по-моему, по умолчанию) приводит к возникновению феномена без рута.

6 голосов
/ 06 марта 2014

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

3 голосов
/ 22 августа 2011

Мы решили проблему, убедившись, что наш тестовый проект создан. У нас была проблема в пути сборки, которая не позволяла компилировать наш тестовый класс. Как только мы решили проблему пути сборки, тест скомпилировался, и «новый» метод смог быть запущен. Таким образом, мы можем предположить, что тесты Unrooted также означают, что они не существуют в скомпилированном двоичном файле.

2 голосов
/ 23 сентября 2008

Я никогда не видел этого - но насколько я могу судить по скиммингу Google в течение нескольких минут, похоже, что это может быть ошибка в Eclipse, а не проблема с вашим тестом. Я полагаю, у вас нет аннотации @Test на тесте? Можете ли вы сдуть тест и пересоздать его, и если это так, вы получите ту же ошибку?

1 голос
/ 29 сентября 2015

У меня была такая же проблема с java.lang.NoClassDefFoundError: org / hamcrest / SelfDescribing

тебе нужен баночный подголовник. тот же вопрос 14539072: java.lang.NoClassDefFoundError: org / hamcrest / SelfDescribing

1 голос
/ 02 сентября 2013

Для меня это было связано с тем, что в проекте возникли проблемы со сборкой. Моя конфигурация зависимостей maven должна быть обновлена.

1 голос
/ 03 октября 2014

Это два сценария, в которых появляются ошибки Unrooted.

  1. Если вы пропустили аннотацию @Test до теста.

    @ Test

    public void foo () { }

  2. Если это проект Gwt и когда определены два макета одного и того же объекта. Допустим, есть один класс класса А и

    @ GwtMock личное Atest;

    @ GwtMock частный А а; Тогда это также покажет Unrooted test error.

1 голос
/ 07 апреля 2014

У меня была эта проблема и я поставил один " @ Test ", прежде чем метод теста решил ее!

как это:

@Test public void testOne() { // ... assertTrue(1 == 1); }

...