Sto provando a scrivere un test di unità per un codice che crea UIButtons al livello di programmazione, ma quando chiamo questo codice dal test, ottengo un NullReferenceException
. Passando attraverso il debugger, sembra che UIButton.FromType()
restituisca null.Creazione di componenti dell'interfaccia utente iOS dal codice di prova NUnit
Ecco il metodo che sto testando:
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;
}
Ed ecco il metodo di prova:
[Test()]
public void TestMakeButtonTitle()
{
String title = "Elvis";
UIButton button = GetFactory().makeButton(title, delegate(IWelcomeController w) {});
Assert.AreEqual(title, button.Title(UIControlState.Normal));
}
Sto indovinando c'è qualcosa di magico che devo fare ambiente-saggio al fine di ottenere MonoTouch.UIKit per lavorare al di fuori di una vera applicazione. Qualche suggerimento? (E se non è possibile, suggerito approcci alternativi?)
Se così fosse, mi aspetterei che il codice non venga compilato o che esploda quando provo a caricare la classe UIButton o chiamare FromType(). Non mi aspetto che la chiamata a FromType() abbia esito positivo, ma restituire null. –