2014-09-03 2 views
1

Я вытаскиваю свои волосы, пытаясь запустить простой тест на совместимость с Vanilla JUnit в моем проекте Android. Я хочу написать тест для класса POJO, который не использует никаких объектов Android. На самом деле, я даже не могу получить тестовую работу, которая ничего не тестирует!Запуск тестов Vanilla JUnit на отдельные классы в проекте Android Eclipse JUnit

Я читал Google's "Testing Fundamentals" documentation, бесчисленное количество вопросов, и я думаю, что я достиг новой высоты глупости, поскольку, похоже, у меня стало меньше, чем у всех в истории Android.

Моя догадка на то, что я должен делать это:

  1. Создать новый проект андроида. Я уже разработал свое прототипное приложение с действиями, POJO и всем остальным - он отлично работает на моем телефоне. «MyExample»
  2. В окне «Обозреватель пакетов» Eclipse В проекте андроида, который я хочу проверить, в элементе папки «src» я нажимаю правой кнопкой мыши на элемент пакета: «com.example.myexample», выберите «New»> «Other ...»,
  3. Затем во всплывающем окне выберите «Android»> «Android Test Project»
  4. В текстовом поле «Название проекта» я вхожу в «TestMyProject» и ударяю по " Далее ".
  5. Выберите переключатель «Существующий Android-проект», выберите «MyExample» и нажмите кнопку «Готово».
  6. В "Package Explorer", разверните "TestMyExample", щелкните правой кнопкой мыши на пакете "com.example.myexample.test, выберите "Создать"> "JUnit Test Case".
  7. В этом всплывающем окне введите имя" MyTestCase».

Затем я ввожу следующее в файле Java:

package com.example.myexample.test; 

import junit.framework.TestCase; 

public class MyTestCase extends TestCase { 

    public void testHelloWorld(){ 

     assertTrue("Hello World Error", false); 

    } 

} 

Наконец, я правой кнопкой мыши файл в проводнике пакетов выберите "Run As"> "JUnit Test", затем во всплывающем окне выберите «Использовать настройки конфигурации» и выберите «Запуск Eclipse JUnit Launcher» и нажмите «ОК». ".

Я получаю эту ошибку в окне консоли:

Invalid layout of java.lang.String at value 
# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# Internal Error (javaClasses.cpp:136), pid=5216, tid=2756 
# fatal error: Invalid layout of preloaded class 

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

Пожалуйста, помогите!

ответ

1

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

Выберите Run As -> Тест Android JUnit вместо теста JUnit. Это потому, что эти тесты нужно запускать на устройстве, поэтому сборка немного больше задействована, чем для обычных тестов JUnit.

Я предполагаю, что вы уже прочитали docs, но это легко пропустить.

+0

Ах, спасибо, это сработало! Есть ли способ тестирования объектов в проекте андроида, которые не ссылаются на какие-либо объекты андроида, без использования реального или виртуального устройства и без использования roboelectric или mockito и т. Д.? Просто используя JUnit на обычной виртуальной машине? – Jodes

+0

Да, если вы тестируете что-то, что ничего не использует в каркасе Android, вы должны просто написать для него обычный тест JUnit и запустить его как тест JUnit на JVM, и он должен работать нормально.Robolectric также очень хорош для запуска модульных тестов на JVM, даже если в коде используется фреймворк Android. Mockito не имеет ничего общего с этим, вы можете использовать его с любым типом теста, который вам нужен, если вы хотите иметь издевательства. –

+0

Спасибо - мне нужно сделать не-андроидный проект (ы) для кода (и/или тестов) для тестирования с использованием простого JUnit на JVM? – Jodes

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