У меня возникла проблема с получением тестов для запуска с использованием библиотек 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");
}
}
Вы сравнили файлы jar? –
бит для бит, нет - я открыл их в vi для сравнения, чтобы убедиться, что они были, по крайней мере, похожими, и о том, какой маленький открытый текст был там, они, казалось, содержали правильные пути. Они были примерно одинакового размера. Есть ли лучший способ сравнить файлы jar? Есть ли способ проанализировать содержимое, чтобы проверить, что содержится внутри? – Brian
вы можете разархивировать файлы jar, чтобы узнать, что они содержат. Затем вы можете использовать diff (утилиту командной строки для linux и т. Д.), Чтобы сравнить каждый файл, который вы распаковали, с тем же именем файла, который был распакован из рабочего файла jar. Можете ли вы также опубликовать код для своего тестового примера, если есть причуда с именем теста и т. Д. – JulianHarty