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, в то время как основной пакет в манифесте находится на одну папку выше, поэтому я указал все в намерении. Но выброшенная ошибка, похоже, по-прежнему получает неправильную пару имен (Package, Class).


person Andrea Richiardi    schedule 06.02.2014    source источник


Ответы (1)


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

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

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

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