Хорошо, у меня странная проблема. Я тестирует UserControl и иметь такой код:nunit setup/teardown не работает?
[TestFixture]
public myTestClass : UserControl
{
MyControl m_Control;
[Test]
public void TestMyControl()
{
m_Control = new MyControl();
this.Controls.Add(m_Control);
Assert.That(/*SomethingOrOther*/)
}
}
Это работает отлично, но когда я изменить его на:
[TestFixture]
public myTestClass : UserControl
{
MyControl m_Control;
[Setup]
public void Setup()
{
m_Control = new MyControl();
this.Controls.Add(m_Control);
}
[TearDown]
public void TearDown()
{
this.Controls.Clear();
}
[Test]
public void TestMyControl()
{
Assert.That(/*SomethingOrOther*/);
}
}
я получаю Ссылка на объект не указывает на экземпляр объекта. Я даже выхожу на консоль, чтобы убедиться, что установка/срыв были запущены в правильное время, и они были ... но все же это не новый пользовательский контроль.
редактировать> Точный код:
[TestFixture]
public class MoneyBoxTests : UserControl
{
private MoneyBox m_MoneyBox;
private TextBox m_TextBox;
#region "Setup/TearDown"
[SetUp]
public void Setup()
{
MoneyBox m_MoneyBox = new MoneyBox();
TextBox m_TextBox = new TextBox();
this.Controls.Add(m_MoneyBox);
this.Controls.Add(m_TextBox);
}
[TearDown]
public void TearDown()
{
this.Controls.Clear();
}
#endregion
[Test]
public void AmountConvertsToDollarsOnLeave()
{
m_MoneyBox.Focus();
m_MoneyBox.Text = "100";
m_TextBox.Focus();
Assert.That(m_MoneyBox.Text, Is.EqualTo("$100.00"), "Text isn't $100.00");
}
[Test]
public void AmountStaysANumberAfterConvertToDollars()
{
m_MoneyBox.Focus();
m_MoneyBox.Text = "100";
m_TextBox.Focus();
Assert.That(m_MoneyBox.Amount, Is.EqualTo(100), "Amount isn't 100");
}
}
я получаю исключение (ы) в соответствующем m_MoneyBox.Focus() вызывает.
Решаемые - См комментарии Джозефа
! Я понял. Я очень ценю ваш вклад. Проблема заключалась в том, что я повторно объявлял moneybox/textbox в настройке (в отличие от JUST newing). –
@SnOrfus: Это легко сделать, если вы рекламируете локальный объект для объекта класса.По иронии судьбы, вы поняли это в своем псевдокоде. – Autodidact