Я возился с NUnitForms
и столкнулся с проблемой в своем простом тесте. Я предоставлю дополнительную информацию ниже, но, чтобы кратко обобщить вопрос, я нахожусь в состоянии, которое мне нужно наследовать от класса NUnitFormTest
, чтобы использовать функциональность ExpectModal
, но это приводит к тому, что тесты не могут быть найдены (используя NUnit 3.6.1) . Если я перейду на NUnit
версии 2.x, тесты будут найдены, но я получаю ошибки в функции TearDown. Есть ли что-то, что мне здесь не хватает?
Теперь полную информацию смотрите ниже...
Мой тест изначально ссылался на NUnit 3.6.1
и выглядел следующим образом:
using EnterpriseManager;
using NUnit.Extensions.Forms;
using NUnit.Framework;
namespace ManagerTests
{
[TestFixture]
public class ManagerTests
{
[Test]
public void ConnectTest()
{
ConnectForm form = new ConnectForm();
form.Show();
ButtonTester testButton = new ButtonTester("TestConnectionButton", "ConnectForm");
testButton.Click();
LabelTester testLabel = new LabelTester("StatusLabel", "ConnectForm");
Assert.AreEqual("Connection successful", testLabel.Text);
}
}
}
В моем первоначальном тесте выше я не наследовал от класса NUnitFormTest
(в то время я не знал об этом), но даже несмотря на то, что он отсутствовал, мой тест был бы найден обозревателем тестов Visual Studio, и я мог запустить свой тест через приложение nunit3-console
(который прошел).
В конце концов я расширил свой тест, чтобы вызвать модальное диалоговое окно, которое вызвало у меня проблемы, хотя в конце концов я прочитал о функциональности ExpectModal
, которая привела меня к добавлению наследования NUnitFormTest
. Тест стал следующим:
using EnterpriseManager;
using NUnit.Extensions.Forms;
using NUnit.Framework;
namespace ManagerTests
{
[TestFixture]
public class ManagerTests : NUnitFormTest
{
[Test]
public void ConnectTest()
{
ConnectForm form = new ConnectForm();
form.Show();
ButtonTester testButton = new ButtonTester("TestConnectionButton", "ConnectForm");
testButton.Click();
LabelTester testLabel = new LabelTester("StatusLabel", "ConnectForm");
Assert.AreEqual("Connection successful", testLabel.Text);
ExpectModal("ConnectToServer", delegate {
LabelTester label = new LabelTester("ConnectStatusLabel", "ConnectToServer");
Assert.AreEqual("Connected", label.Text);
});
// Launch the modal dialog
ButtonTester connectButton = new ButtonTester("ConnectToServerButton", "ConnectForm");
connectButton.Click();
}
}
}
Вот тут и начались проблемы. После добавления наследования класса NUnitFormTest
ни Visual Studio, ни nunit3-console.exe
не обнаружили никаких тестов. Я подумал, что это может быть связано с версией упомянутой NUnit
, поэтому я понизил версию до различных версий 2.x. Это позволило Visual Studio обнаружить тесты (хотя nunit3-console.exe
продолжал сообщать о «неубедительном» результате), но все тесты завершались ошибкой:
Result StackTrace:
--TearDown
at NUnit.Extensions.Forms.Desktop.Destroy()
at NUnit.Extensions.Forms.NUnitFormTest.Verify()
Result Message: TearDown : System.ComponentModel.Win32Exception : The requested resource is in use
Я провел некоторые поиски по этой проблеме, но все, что я нашел, казалось, предполагало, что это была какая-то ранее встречавшаяся проблема с NUnit
, которая была исправлена в какой-то момент (не цитируйте меня). Итак, теперь я нахожусь в состоянии, когда мне нужно наследовать от класса NUnitFormTest
, чтобы использовать функциональность ExpectModal
, но это приводит к тому, что тесты не найдены. Тем не менее, если я перейду на NUnit
версии 2.x, у меня возникнут проблемы с функцией TearDown
. Есть ли что-то, что мне здесь не хватает?
NUnitForms
сNUnit 3.x
или он будет работать только с версиями 2.x? - person Fizz   schedule 10.05.2017