2014-02-06 1 views
2

Хорошо ... это более вероятно, будет моя вина;)ActionBarActivity & ActivityUnitTest - NameNotFoundException

Когда я делаю:

public class XmlLifecycleTests extends ActivityUnitTestCase<Main> { 
... 
    (not in setUp) 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_LAUNCHER); 
    intent.setPackage(APP_PACKAGE); 
    intent.setClassName(APP_PACKAGE, ".gui.Main"); 
    startActivity(intent, null, null);  

я получаю:

java.lang.IllegalArgumentException: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{ar.android.app.gui/ar.android.app.gui.GLarmMain} 
at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:282) 
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:119) 
at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:58) 
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) 
at ar.android.app.gui.Main.onCreate(Main.java:78) 
at android.app.Activity.performCreate(Activity.java:5133) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158) 

Обратите внимание, что мой Основная деятельность определяется под .gui, в то время как основной пакет в манифесте - одна папка вверх, поэтому я указал все в намерении. Но заброшенная ошибка, похоже, все еще ошибочна (Пакет, Класс).

ответ

4

Это действительно моя вина ... startActivity переключение на:

setActivity(launchActivity(pkg, actClass, null));

разрешило все мои проблемы.

+1

Что со мной произошло: у меня была активность A в рабочем приложении. У меня была активность B, которая расширила A в junittest приложении. Я использовал ActivityUnitTestCase для проверки активности B, но я не добавил активность B в мой файл манифеста в моем приложении для тестирования junit. Добавлено его и PackageManager $ NameNotFoundException ушло. – flobacca