Java >> Java Tutorial >  >> Java

Ausführen von TestProject-Tests in einer lokalen Entwicklungsumgebung

Das TestProject-Framework bietet Unterstützung für die Ausführung von TestProject-Tests und -Aktionen in einer lokalen Entwicklungsumgebung, und dieser Blogbeitrag erklärt, wie wir können diese Funktion verwenden.

Nachdem wir diesen Blogbeitrag fertiggestellt haben, werden wir:

  • Wissen, wie wir unseren Entwicklerschlüssel erhalten können.
  • Verstehen, wie wir Eingabeparameterwerte an den aufgerufenen Testfall übergeben können.
  • Wissen, wie wir eine Runner-Klasse schreiben können, die einen TestProject-Test in unserer lokalen Entwicklungsumgebung ausführt.

Beginnen wir damit, herauszufinden, wie wir einen TestProject-Test in unserer lokalen Entwicklungsumgebung ausführen können.

Implementieren einer Runner-Klasse

Wenn wir einen TestProject-Test in unserer lokalen Entwicklungsumgebung ausführen möchten, müssen wir eine Runner-Klasse implementieren, die unseren Test ausführt. Während dieses Tutorials schreiben wir eine Runner-Klasse, die einen TestProject-Test ausführt, den wir in einem früheren Teil meines TestProject-Tutorials geschrieben haben. Dieser Test stellt sicher, dass die Suchergebnisseite meines Blogs mindestens ein Ergebnis anzeigt, nachdem wir das Suchformular abgeschickt haben.

Wir können diese Runner-Klasse implementieren, indem wir diesen Schritten folgen:

Zuerst , müssen wir unseren Entwicklerschlüssel von der Website app.testproject.io beziehen. Wir können unseren Entwicklerschlüssel erhalten, indem Sie diesen Schritten folgen:

  1. Melden Sie sich auf der Website app.testproject.io an.
  2. Öffnen Sie die Seite "Entwickler".
  3. Klicken Sie auf die Schaltfläche „Entwicklerschlüssel“. Diese Schaltfläche öffnet einen modalen Dialog, der unseren Entwicklerschlüssel anzeigt.

Die folgende Abbildung veranschaulicht das Layout der Seite „Entwickler“:

Zweiter , da wir einen TestProject-Test mit Eingabeparametern ausführen möchten, müssen wir einen Weg finden, die Parameterwerte an den aufgerufenen Test zu übergeben. Weil die Parameterfelder private sind , müssen wir unserer Testklasse zwei Setter-Methoden hinzufügen. Diese Methoden setzen die Werte von searchPageUrl und searchTerm Felder.

Nachdem wir diese Setter-Methoden zu unserer Testklasse hinzugefügt haben, sieht ihr Quellcode wie folgt aus:

import io.testproject.java.annotations.v2.Parameter;
import io.testproject.java.annotations.v2.Test;
import io.testproject.java.sdk.v2.drivers.WebDriver;
import io.testproject.java.sdk.v2.enums.ExecutionResult;
import io.testproject.java.sdk.v2.exceptions.FailureException;
import io.testproject.java.sdk.v2.tests.WebTest;
import io.testproject.java.sdk.v2.tests.helpers.WebTestHelper;
import io.testproject.proxy.addon.BlogSearchAddon;
import io.testproject.proxy.addon.net.petrikainulainen.testproject.addon.BlogSearchAction;
import io.testproject.proxy.addon.net.petrikainulainen.testproject.addon.BlogSearchResultFinderAction;
import io.testproject.proxy.addon.net.petrikainulainen.testproject.addon.ClearBlogSearchFieldAction;

@Test(
 name = "The search result page must display least one search result",
 description = "Verifies that the search result page displays at least one search result"
)
public class BlogSearchResultCountTest implements WebTest {

 @Parameter(description = "Contains the url of the search page")
 private String searchPageUrl;

 @Parameter(description = "Contains the submitted search term")
 private String searchTerm;

 @Override
 public ExecutionResult execute(WebTestHelper webTestHelper) throws FailureException {
 WebDriver browser = webTestHelper.getDriver();
 browser.get(searchPageUrl);

 ActionRunner actionRunner = new ActionRunner(webTestHelper);

 ClearBlogSearchFieldAction clearSearchField = BlogSearchAddon
 .getClearBlogSearchFieldAction();
 actionRunner.runAction(clearSearchField);

 BlogSearchAction blogSearch = BlogSearchAddon.blogSearchAction(searchTerm);
 actionRunner.runAction(blogSearch);

 BlogSearchResultFinderAction searchResults = BlogSearchAddon
 .getBlogSearchResultFinderAction();
 actionRunner.runAction(searchResults);

 return searchResults.actualSearchResultCount > 0 
 ? ExecutionResult.PASSED 
 : ExecutionResult.FAILED;
 }

 public void setSearchPageUrl(String searchPageUrl) {
 this.searchPageUrl = searchPageUrl;
 }

 public void setSearchTerm(String searchTerm) {
 this.searchTerm = searchTerm;
 }
}

Dritter , müssen wir einen public erstellen Runner-Klasse, die unseren Test durchführt. Nachdem wir unsere Runner-Klasse erstellt haben, sieht ihr Quellcode wie folgt aus:

public class BlogSearchResultCountTestRunner {
}

Vierter , müssen wir unserer Runner-Klasse vier Konstanten hinzufügen:

  1. Die BROWSER Konstante konfiguriert den Browser, der unseren Test ausführt. Da wir unseren Test mit dem Chrome-Webbrowser ausführen möchten, müssen wir den Wert dieser Konstante auf AutomatedBrowserType.Chrome setzen .
  2. Der DEVELOPER_KEY Konstante konfiguriert unseren Entwicklerschlüssel.
  3. Der SEARCH_PAGE Konstante konfiguriert die URL der Webseite, die das Suchformular darstellt.
  4. Die SEARCH_TERM Konstante konfiguriert den verwendeten Suchbegriff.

Nachdem wir diese Konstanten zu unserer Runner-Klasse hinzugefügt haben, sieht ihr Quellcode wie folgt aus:

public class BlogSearchResultCountTestRunner {

 private static final AutomatedBrowserType BROWSER = AutomatedBrowserType.Chrome;
 private static final String DEVELOPER_KEY = "PUT_YOUR_DEVELOPER_KEY_HERE";

 private static final String SEARCH_PAGE = "https://www.petrikainulainen.net/blog";
 private static final String SEARCH_TERM = "junit 5";
}

Fünfter , müssen wir einen public hinzufügen und static main() Methode zu unserer Läuferklasse. Diese Methode benötigt String array als Methodenparameter und gibt nichts zurück. Außerdem kann diese Methode einen Exception auslösen .

Nachdem wir den main() hinzugefügt haben -Methode zu unserer Runner-Klasse, sieht ihr Quellcode wie folgt aus:

public class BlogSearchResultCountTestRunner {

 private static final AutomatedBrowserType BROWSER = AutomatedBrowserType.Chrome;
 private static final String DEVELOPER_KEY = "PUT_YOUR_DEVELOPER_KEY_HERE";

 private static final String SEARCH_PAGE = "https://www.petrikainulainen.net/blog";
 private static final String SEARCH_TERM = "junit 5";

 public static void main(String[] args) throws Exception { 

 }
}

Sechster , müssen wir den main() implementieren Methode, indem Sie diesen Schritten folgen:

  1. Erstellen Sie einen Runner Objekt, das Webtests ausführen kann. Wir können dieses Objekt erstellen, indem wir createWeb() aufrufen Methode des Runner Klasse. Wenn wir diese Methode aufrufen, müssen wir unseren Entwicklerschlüssel und den Webbrowser angeben, der unseren Test ausführt.
  2. Erstellen Sie einen neuen BlogSearchResultCountTest Objekt.
  3. Konfigurieren Sie die URL der Suchseite und den verwendeten Suchbegriff.
  4. Führen Sie unseren Test durch, indem Sie run() aufrufen Methode des Runner Klasse. Denken Sie daran, das aufgerufene Testobjekt als Methodenparameter zu übergeben.

Nachdem wir den main() implementiert haben -Methode sieht der Quellcode unserer Runner-Klasse wie folgt aus:

import io.testproject.java.enums.AutomatedBrowserType;
import io.testproject.java.sdk.v2.Runner;

public class BlogSearchResultCountTestRunner {

 private static final AutomatedBrowserType BROWSER = AutomatedBrowserType.Chrome;
 private static final String DEVELOPER_KEY = "PUT_YOUR_DEVELOPER_KEY_HERE";

 private static final String SEARCH_PAGE = "https://www.petrikainulainen.net/blog";
 private static final String SEARCH_TERM = "junit 5";

 public static void main(String[] args) throws Exception {
 Runner runner = Runner.createWeb(DEVELOPER_KEY, BROWSER);

 BlogSearchResultCountTest test = new BlogSearchResultCountTest();
 test.setSearchPageUrl(SEARCH_PAGE);
 test.setSearchTerm(SEARCH_TERM);

 runner.run(test);
 }
}

Wir haben jetzt eine Runner-Klasse geschrieben, die unseren TestProject-Test in unserer lokalen Entwicklungsumgebung ausführt. Wenn wir unseren TestProject-Test ausführen möchten, müssen wir unseren TestProject-Agenten starten und den main() ausführen Methode des BlogSearchResultCountTestRunner Klasse. Als nächstes werden wir herausfinden, wie uns diese Runner-Klasse hilft, den aufgerufenen Testfall zu debuggen.

Debuggen des aufgerufenen TestProject-Tests

Nachdem wir unsere Runner-Klasse implementiert haben, können wir unseren TestProject-Test debuggen, indem wir diesen Schritten folgen:

Zuerst , müssen wir die Testklasse öffnen und einen Haltepunkt auf die bevorzugte Zeile setzen. Wenn wir zum Beispiel die Ausführung unseres Testfalls stoppen wollen, bevor wir die Behauptung machen, die sicherstellt, dass die Suchergebnisseite mindestens ein Suchergebnis hat, müssen wir unsere Testklasse öffnen und unseren Haltepunkt auf die Zeile 45 setzen.

Die folgende Abbildung veranschaulicht diesen Schritt:

Zweiter , müssen wir unsere Runner-Klasse ausführen (BlogSearchResultCountTestRunner ) in einem Debug-Modus. Wenn wir dies tun, sollte unsere IDE die Ausführung des aufgerufenen TestProject-Tests stoppen, wenn die Ausführung die Zeile mit einem Haltepunkt (45) erreicht. Wenn die Ausführung gestoppt wird, können wir einen Blick auf das Browserfenster werfen und (hoffentlich) sehen, warum der Testfall fehlschlägt.

Die folgende Abbildung zeigt, was wir sehen sollten, wenn unsere IDE die Ausführung von BlogSearchResultCountTest stoppt Klasse:

Wir haben jetzt eine Runner-Klasse geschrieben, die einen TestProject-Test in unserer lokalen Entwicklungsumgebung ausführt, und wir verstehen, wie diese Runner-Klasse uns hilft, einen fehlgeschlagenen Testfall zu debuggen. Fassen wir zusammen, was wir aus diesem Blogbeitrag gelernt haben.

Zusammenfassung

Dieser Blogbeitrag hat uns vier Dinge gelehrt:

  • Bevor wir TestProject-Tests (oder -Aktionen) in unserer lokalen Entwicklungsumgebung ausführen können, müssen wir unseren Entwicklerschlüssel von der Website app.testproject.io abrufen.
  • Wenn wir einen TestProject-Test (oder eine Aktion) in unserer lokalen Entwicklungsumgebung ausführen möchten, müssen wir eine spezielle Runner-Klasse schreiben, die unseren Test ausführt.
  • Wir können TestProject-Tests und -Aktionen ausführen, indem wir den Runner verwenden Klasse.
  • Wir können den aufgerufenen TestProject-Test (oder die Aktion) debuggen, indem wir den Debugger unserer IDE verwenden.

Java-Tag