2012-03-20 6 views
0

Чтобы уточнить, я относительно незнакома с Java.Почему JUnit не находит мои тесты?

Я пишу класс «GobblerClient», чтобы взаимодействовать с API, и чтобы проверить некоторые из моих функций, я решил написать несколько модульных тестов с помощью JUnit. Я создал группу неудачных тестов, и когда я иду запускать их, кажется, что JUnit просто не находит их.

picture of eclipse with failing tests and no tests in the junittest view

Любые идеи, почему JUnit не может обнаруживать мои тесты?

EDIT: Полные испытания.

package com.gobbler; 

import static org.junit.Assert.*; 

import org.junit.Test; 

public class GobblerClientTest { 

    @Test 
    public void testDisplay_name() { 
     fail("Not yet implemented"); 
    } 

    @Test 
    public void testUser_id() { 
     fail("Not yet implemented"); 
    } 

    @Test 
    public void testAuthenticity_token() { 
     fail("Not yet implemented"); 
    } 

    @Test 
    public void testClient_key() { 
     fail("Not yet implemented"); 
    } 

    @Test 
    public void testGobblerClient() { 
     fail("Not yet implemented"); 
    } 

    @Test 
    public void testAuthenticate() { 
     fail("Not yet implemented"); 
    } 

    @Test 
    public void testGet_data() { 
     fail("Not yet implemented"); 
    } 

    @Test 
    public void testSha1hmac() { 
     fail("Not yet implemented"); 
    } 

} 
+0

Снимок экрана бесполезен. Вставьте код в вопрос правильно. – skaffman

+0

Не могли бы вы расширить список импорта? –

+0

Извините, я просто хотел показать, что тесты не отображаются на левой панели. Я добавил код выше. –

ответ

4

Диалоговое окно JUnit пуст, пока вы не запустите некоторые тесты, показывая результаты последнего запуска.

Самый простой способ сделать это правой кнопкой мыши на классе (или в проводнике пакетов или имя класса в исходном коде) и выберите Run As ->JUnit Test

Если тесты не появляются в этой точке, повторите попытку с Run As ->Run Configurations... и в появившемся диалоговом окне «Run» убедитесь, что раскрывающийся список «Test runner» установлен в «JUnit 4». Если он установлен на более раннюю версию, он не обнаружит ваши аннотации @Test.

Редактировать: Поскольку вы используете Android, а не стандартную JVM, вам нужно выполнить некоторую дополнительную настройку, см. Мои комментарии.

+0

Я пробовал (скриншот в середине), но он всегда просто пуст. –

+0

Отлаживайте и смотрите, где он застревает. Простой факт, что вы смогли сделать скриншот в середине, странно, учитывая ваши пустые тесты. – Jochen

+1

Я обновил свой ответ, но я только что понял, что вы добавили, что используете Android - для этого есть больше настроек. Вам нужно включить InstumentationTestRunner и использовать «Run As» -> «Android Junit Test». Это независимо от того, используете ли вы какой-либо код платформы Android (ваши классы не являются байт-кодом Java, они Dalvik). См. Документы разработчика: http://developer.android.com/guide/developing/testing/testing_eclipse.html – seanhodges

0

Несколько догадок: возможно, ваше Eclipse уже запускает предыдущую сессию junit, которая почему-то застряла; нажатие «Terminate» и попытка повторного использования могут помочь.

Еще одна вещь, которую вы можете проверить, - это ваша версия Eclipse; если он слишком старый, его встроенный junit runner может не распознать аннотации Junit, которые были включены в junit 4.x, если я не ошибаюсь.

Окончательное предположение будет пытаться проверить, включен ли фактический тест junit в путь сборки вашего проекта (хотя это очень маловероятно, так как вы смогли заставить Eclipse запустить ваш тест).

+0

Так что это, конечно, не первый случай. Я попытался перезапустить Eclipse и повторить без успеха. Я запускаю версию Eclipse: Indigo Service Release 1 на относительно новой машине (и создал тесты со спецификацией, которые являются junit4), так что это не совсем так. –

0

Это произошло со мной в IBM Rational Application Developer 8.5. В моем случае проблема связана с тем, что я сконфигурировал проект с помощью JDK по умолчанию (который является JDK IBM для WebSphere). Переключение на ванильный JDK 1.6 исправил его для меня. Я подозреваю, что реальная причина - не настоящая версия JDK, - но переключатель был достаточно хорош, чтобы позволить мне двигаться дальше ... :-)

Смежные вопросы