2013-04-06 6 views
1

У меня возникла проблема с получением тестов для запуска с использованием библиотек UIAutomator для Android в Linux. Базовая установка является Nexus 4, или эмулятора с 4.2.2, JDK6, Eclipse, и Linux Mint 13.UIAutomator запускает 0 тестов при построении на Linux, но отлично работает на других платформах

корень этого вопроса:

INSTRUMENTATION_STATUS: stream= 
Test results for WatcherResultPrinter= 
Time: 0.007 

OK (0 tests) 


INSTRUMENTATION_STATUS_CODE: -1 

Это то, что я получаю, когда я создайте файл jar под Linux. Если я построю его в Windows или OSX, все, кажется, работает плавно. В этом конкретном случае есть только один тест, который должен нажать кнопку «домой».

Если я создаю проект с тем же кодом и те же шаги в любой другой среде (osx/windows), тест выполняется, как ожидалось.

Мой вопрос: почему тест-бегун не сможет найти класс, когда банка создана под Linux, в отличие от платоформ? Самое лучшее и единственное догадывание прямо сейчас в том, что каким-то образом путь java не задан правильно при компиляции, поэтому файл jar построен неправильно. При запуске тестов из Eclipse я изначально получил «ClassNotFoundException», тогда как в osx/windows тесты выполнялись в JUnit, но сбой.

Я вникнул в это и обнаружил, что все компиляторы указывают на разные версии java на разных частях системы. Я исправил это, удалил все, кроме одного экземпляра java6jdk, и проверил JAVA_HOME, пути сборки eclipse и пути компиляции java, все указывают на один и тот же экземпляр.

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

Благодаря

редактирует: баночка TVF:

[email protected]:~/workspace/TestOne/bin$ jar tvf testui1.jar 
0 Sun Apr 07 14:23:24 PDT 2013 META-INF/ 
103 Sun Apr 07 14:23:22 PDT 2013 META-INF/MANIFEST.MF 
1052 Sun Apr 07 14:23:24 PDT 2013 classes.dex 

Код:

package com.test; 

import android.util.Log; 

public class FirstTest extends UiAutomatorTestCase { 

    public void thisTest() throws UiObjectNotFoundException { 
     getUiDevice().pressHome(); 
     Log.i("HELP","HELP ME"); 
    } 

} 
+0

Вы сравнили файлы jar? –

+0

бит для бит, нет - я открыл их в vi для сравнения, чтобы убедиться, что они были, по крайней мере, похожими, и о том, какой маленький открытый текст был там, они, казалось, содержали правильные пути. Они были примерно одинакового размера. Есть ли лучший способ сравнить файлы jar? Есть ли способ проанализировать содержимое, чтобы проверить, что содержится внутри? – Brian

+0

вы можете разархивировать файлы jar, чтобы узнать, что они содержат. Затем вы можете использовать diff (утилиту командной строки для linux и т. Д.), Чтобы сравнить каждый файл, который вы распаковали, с тем же именем файла, который был распакован из рабочего файла jar. Можете ли вы также опубликовать код для своего тестового примера, если есть причуда с именем теста и т. Д. – JulianHarty

ответ

4

После слишком много работы и усилий, я смущен, чтобы сообщить, что этот вопрос в названии тестовой функции. Если функции начинаются с «test_», то автомат находит тесты. Если он не начинается с 'test_', он игнорирует их.

Gah!

+0

В своем первоначальном вопросе вы сказали, что ваши тесты работали в Windows и OSX, но не выполнялись, если они построены на Linux. Из вашего ответа я предполагаю, что операционная система не была проблемой вообще, и у вас также были разные исходные файлы на Linux, которые объясняли бы, почему у вас были симптомы, о которых вы сообщаете. FYI, вы не единственный человек, который может покончить с тем, чтобы назвать здесь тесты. Я ожидаю, что тестовый бегун Android использует отражение (в Java), чтобы найти, какие методы обрабатывать как тесты. Мое, возможно упрощенное представление - тесты должны подтвердить правила JUnit 3. – JulianHarty

+0

По крайней мере в компиляции Windows вам нужно очистить uidump.xml в выбранной целевой папке, если вы переименуете или иным образом существенно измените файл jar, иначе это может привести к проблемам с тестированием. – JackOrangeLantern

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