#c# #automated-tests #watin
#c# #автоматизированные тесты #watin
Вопрос:
Я написал демонстрационный код для тестирования функции заставки WatiN.
Но когда я намеренно пишу следующий фрагмент кода для сбоя и сохраняю снимок экрана, он просто перестает выполняться после утверждения.Истинный ie, в котором тест не выполняется
using System;
using WatiN.Core;
using Gallio.Framework;
using MbUnit.Framework;
using Gallio.Model;
namespace Screenshotwhentestfails
{
[TestFixture]
class Program
{
public IE ie = new IE();
[STAThread]
[Test]
static void Main(string[] args)
{
DemoCaptureOnFailure();
DisposeBrowser();
}
[Test]
[TearDown]
public static void DemoCaptureOnFailure()
{
IE ie = new IE();
using (TestLog.BeginSection("Go to Google, enter MbUnit as a search term and click I'm Feeling Lucky"))
{
ie.GoTo("http://www.google.com");
ie.TextField(Find.ByName("q")).TypeText("MbUnit");
ie.Button(Find.ByName("btnI")).Click();
}
// Of course this is ridiculous, we'll be on the MbUnit homepage...
Assert.IsTrue(ie.ContainsText("NUnit"), "Expected to find NUnit on the page.");
}
[TearDown]
public static void DisposeBrowser()
{
IE ie = new IE();
if (TestContext.CurrentContext.Outcome == TestOutcome.Failed)
{
ie.CaptureWebPageToFile("C:\Documents and Settings\All Users\Favorites.png");
}
}
}
}
Это выбрасывает исключение в
Assert.IsTrue(ie.ContainsText("NUnit"), "Expected to find NUnit on the page.");
этот шаг, который был преднамеренным, но сохранение скриншота в указанном месте не выполнено.
Спасибо за любую помощь:)
Ответ №1:
Я думал, ты где используешь NUnit??? В любом случае, вот что вам нужно сделать.
Вы не совсем правильно настраиваете свой тест.
В вашем приложении перейдите в меню Файл-> Создать-> Проект… и добавьте «Тестовый проект MbUnit V3» (версия c #). В обозревателе решений добавьте ссылку на библиотеку DLL WatiN.
Сначала добавьте новый класс для своих тестов с атрибутом [TestFixture]: —
[TestFixture]
public class ScreenshotTest
Добавьте столько методов тестирования, сколько захотите: —
[Test]
public void DoScreenshotTest()
Если у вас есть некоторый код инициализации / завершения, который вы хотите запустить для ВСЕХ тестов в этом классе, вы можете добавить методы: —
[SetUp]
public void DoTestSetup()
[TearDown]
public void DoTestTeardown()
Если вы создадите свое решение и откроете окно просмотра тестов (Test-> Windows-> Test View), вы должны увидеть свои новые методы тестирования. Затем вы можете щелкнуть правой кнопкой мыши и «Запустить выбор» или «Отладить выбор»
Вот полная версия кода, HTH!
[TestFixture]
public class ScreenshotTest
{
private IE ie;
[SetUp]
public void DoTestSetup()
{
ie = new IE();
}
[TearDown]
public void DoTestTeardown()
{
if (ie != null)
{
if (TestContext.CurrentContext.Outcome == TestOutcome.Failed)
ie.CaptureWebPageToFile(@"C:Documents and SettingsAll UsersFavorites.png");
ie.Close();
ie.Dispose();
ie = null;
}
}
[Test]
public void DoScreenshotTest()
{
Assert.IsNotNull(ie);
using (TestLog.BeginSection("Go to Google, enter MbUnit as a search term and click I'm Feeling Lucky"))
{
ie.GoTo("http://www.google.com");
ie.TextField(Find.ByName("q")).TypeText("MbUnit");
ie.Button(Find.ByName("btnI")).Click();
}
Assert.IsTrue(ie.ContainsText("NUnit"), "Expected to find NUnit on the page.");
}
}
Комментарии:
1. Кроме того, в вашем примере вы знаете, что вы создаете три отдельных экземпляра IE? Один в классе, один в DemoCaptureOnFailure и один в DisposeBrowser.