Создание компонентов пользовательского интерфейса iOS из тестового кода NUnit - PullRequest
6 голосов
/ 07 октября 2010

Я пытаюсь написать модульный тест для некоторого кода, который программно создает кнопки UIB, но когда я вызываю этот код из теста, я получаю NullReferenceException. Проходя в отладчике, похоже, что UIButton.FromType() возвращает ноль.

Вот метод, который я тестирую:

    public UIButton makeButton (String title, Action<IWelcomeController> action)
    {
        UIButton button = UIButton.FromType (UIButtonType.RoundedRect);
        // button is null here
        button.SetTitle(title, UIControlState.Normal);
        button.TouchUpInside += (sender, e) => {
            action(controller);
        };
        return button;
    }

А вот и метод испытания:

    [Test()]
    public void TestMakeButtonTitle ()
    {
        String title = "Elvis";
        UIButton button = GetFactory().makeButton(title, delegate(IWelcomeController w) {});
        Assert.AreEqual(title, button.Title(UIControlState.Normal));
    }

Я полагаю, что есть что-то волшебное, что мне нужно сделать в среде, чтобы заставить MonoTouch.UIKit работать вне реального приложения. Есть намеки? (А если это невозможно, предложите альтернативные подходы?)

Ответы [ 3 ]

1 голос
/ 10 декабря 2010

На данный момент я уверен, что фундаментальная проблема в том, что если вы не работаете на iPhone или в симуляторе iPhone, нет способа вызвать необходимые нативные API для создания экземпляров компонентов.когда-нибудь кто-нибудь скомпилирует NUnit для Monotouch и напишет тестовый запуск iOS ...

0 голосов
/ 20 января 2012

Может быть, когда-нибудь кто-нибудь скомпилирует NUnit для Monotouch и напишет тестер для iOS ...

Такой раннер для iOS теперь существует, и он даже поставляется с последними выпусками MonoTouch 5.1.x (бета).

0 голосов
/ 14 октября 2010

Я собираюсь предположить, что вы добавили проект NUnit в ваше решение monotouch, и он ссылается на проект (ы) monotouch

Кажется, он не знает, где находятся Monotouch .dll, поэтому добавьте их в качестве ссылки на ваш NUnit. Их можно найти по адресу:

~/Developer/Monotouch/usr/lib/mono/<version>

Это должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...