Ich verwende Specflow mit dem NUnit Test Runner. Wenn ich meine Funktion Datei schreiben und fragen specflow die Schritte zu erzeugen, gibt es den folgenden Code:Wie bekomme ich einen Verweis auf die zu testende Anwendung?
using System;
using TechTalk.SpecFlow;
using Xamarin.UITest.Android;
namespace UITest1
{
[Binding]
public class CategoryPagerSteps
{
[Given(@"The (.*)st category is selected")]
public void GivenTheStCategoryIsSelected(int p0)
{
ScenarioContext.Current.Pending();
}
[When(@"I swipe left")]
public void WhenISwipeLeft()
{
ScenarioContext.Current.Pending();
}
[Then(@"The (.*)nd category is selected")]
public void ThenTheNdCategoryIsSelected(int p0)
{
ScenarioContext.Current.Pending();
}
}
}
Das ist in Ordnung, und ich verstehe, dass diese „Schritte“ sind, die, wenn meine Gurke Datei mit Szenarien aufgerufen wird geschrieben in Gurkin ruft nach ihnen.
Da dies jedoch ein vollständig integrierter UI-Test ist, muss ich Xamarin.UITest.Android verwenden können, um auf Ansichten und dergleichen klicken.
Also muss ich irgendwie das Objekt greifen, das die Anwendung darstellt, die getestet wird, damit ich UI-Operationen darauf ausführen kann.
Jetzt kann ich sehen, dass dieses Objekt in einer anderen automatisch generierten Testvorrichtung Datei mit dem Namen wird initialisiert „Tests.cs“:
using NUnit.Framework;
using Xamarin.UITest;
using Xamarin.UITest.Android;
namespace UITest1
{
[TestFixture]
public class Tests
{
AndroidApp app;
[SetUp]
public void BeforeEachTest()
{
// TODO: If the Android app being tested is included in the solution then open
// the Unit Tests window, right click Test Apps, select Add App Project
// and select the app projects that should be tested.
app = ConfigureApp
.Android
// TODO: Update this path to point to your Android app and uncomment the
// code if the app is not included in the solution.
//.ApkFile ("../../../Android/bin/Debug/UITestsAndroid.apk")
.StartApp();
}
[Test]
public void AppLaunches()
{
app.Screenshot("First screen.");
}
}
}
Ich kann sehen, dass die Eigenschaft AndroidApp app
ist das Objekt, das ich brauche, Zugriff auf, aber wie greife ich auf diese Eigenschaft aus dem Code CategoryPagerSteps
oben? Tests
ist nicht statisch und keine der Methoden oder Eigenschaften. Ich bin nervös, es einfach selbst zu instantiieren, weil das wahrscheinlich vom Testläufer erledigt werden sollte, oder? Eine der anderen automatisch generierten Dateien enthält eine testRunner-Eigenschaft, die jedoch als privat gekennzeichnet ist.
Also jede Straße, die ich hinunter gegangen bin, scheint blockiert und ich fühle, dass ich etwas offensichtlich vermisse.
Schauen Sie sich auf: http://arteksoftware.com/bdd-tests-with-xamarin-uitest-and-specflow/ dieser Artikel in der Tiefe beschreibt, wie mit SpecFlow + Xamarin.UITest loszulegen – Cheesebaron