Próbuję napisać test jednostkowy dla jakiegoś kodu, który programowo tworzy UIButtons, ale kiedy wywołuję ten kod z testu, otrzymuję NullReferenceException
. Przechodząc przez debugger, wygląda na to, że UIButton.FromType()
zwraca zero.Tworzenie komponentów interfejsu iOS z kodu testowego NUnit
Oto metoda jestem testowania:
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;
}
A oto metoda badawcza:
[Test()]
public void TestMakeButtonTitle()
{
String title = "Elvis";
UIButton button = GetFactory().makeButton(title, delegate(IWelcomeController w) {});
Assert.AreEqual(title, button.Title(UIControlState.Normal));
}
Zgaduję jest jakaś magia muszę zrobić środowisko mądry w celu uzyskania MonoTouch.UIKit do pracy poza prawdziwą aplikacją. Jakieś wskazówki? (A jeśli nie jest to możliwe, sugerowane alternatywne podejścia?)
Gdyby tak było, oczekiwałbym, że kod się nie skompiluje lub nie wysadzi w powietrze, gdy spróbuję wczytać klasę UIButton lub zadzwonię FromType(). Nie oczekuję, że wywołanie FromType() zakończy się powodzeniem, ale zwróci wartość null. –