私はSpecFlowとTestStackWhiteで簡単なテストを書こうとしています.Hookファイルを作成してBeforeScenarioとAfterScenarioの定義を保存しました。問題は、テストを実行しようとすると失敗します。コードセクションのBeforeScenarioをHookファイルからTestSequenceSteps.csに移動すると、すべての問題は解決します。[Given(@"I have opened Test")]
フックファイルを正しく参照するにはどうすればよいですか?SpecFlowのSequenceStepsでHookファイルを実行する
TestSequence.feature
Feature: TestSequence
Run full Test
as a test sequence
@run
Scenario: Run test sequence in Test
Given I have opened Test
When I press Test button
And I press Continue button
Then test sequnce is run
Hooks1.cs
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using TechTalk.SpecFlow;
using TestStack.White;
using TestStack.White.Factory;
using TestStack.White.UIItems.Finders;
using TestStack.White.UIItems.WindowItems;
namespace Test.Steps
{
[Binding]
public sealed class Hooks1
{
public static Window window;
public static Application application;
[BeforeScenario("run")]
public void BeforeScenario()
{
application = Application.AttachOrLaunch(new ProcessStartInfo("C:\\Program Files (x86)\\Tests\\" +
"directory\\Test.exe"));
window = application.GetWindow
(SearchCriteria.ByClassName("TGUI"), InitializeOption.NoCache);
}
[AfterScenario]
public void AfterScenario()
{
window.Close();
}
}
TestSequenceSteps.cs
using System;
using TechTalk.SpecFlow;
using TestStack.White;
using TestStack.White.UIItems;
using TestStack.White.UIItems.Finders;
using NUnit.Framework;
using TestStack.White.UIItems.WindowItems;
using TestStack.White.UIItems.TabItems;
using System.Threading;
using System.Diagnostics;
using TestStack.White.Factory;
using System.Linq;
namespace Test.StepDefinitions
{
[Binding]
public class TestSequenceSteps
{
private static Window window;
private static Application application;
[Given(@"I have opened Test")]
public void GivenIHaveOpenedTest()
{
}
[When(@"I press Test button")]
public void WhenIPressTestButton()
{
var button = window.Get<Button>(SearchCriteria.ByClassName("TButton"));
button.Click();
}
[When(@"I press Continue button")]
public void WhenIPressContinueButton()
{
var button = window.Get<Button>(SearchCriteria.ByText("ContinueButton"));
Thread.Sleep(700);
button.Click();
}
[Then(@"test sequnce is run")]
public void ThenTestSequnceIsRun()
{
//ScenarioContext.Current.Pending();
}
}
}
エラーとは何ですか? –
ボタンを見つけることができません。「テストボタン - >エラー:オブジェクト参照がオブジェクトのインスタンスに設定されていません。」というエラーが表示されます。 – omnia