spock integration
Spock do testów integracyjnych (takich jak Rest Services) i do testów funkcjonalnych (z Selenium):
Zbadaliśmy Kpiny, głaskanie i szpiegowanie w Spocku w naszym poprzednim samouczku.
W tym Pełna seria samouczków szkoleniowych na Spock , do tej pory opisywaliśmy pisanie testów jednostkowych przy użyciu frameworka Spock. Testy jednostkowe, zwykle testujące pojedynczą klasę ze wszystkimi punktami integracji lub wywołania zewnętrzne są zastępowane przez wywołania pozorowane lub kody pośredniczące.
Natomiast testy integracji testują punkty integracji między 2 elementami. Na przykład, testowanie umów między 2 usługami, testowanie integracji między usługą a bazą danych itp.
Z tego samouczka dowiemy się, jak używać Spocka do Testy integracyjne (jak usługi wypoczynkowe) i dla testy funkcjonalności . Na przykład , Integracja Spocka z Selenium itp.
Oto samouczek wideo:
Czego się nauczysz:
Integracja Spring Spock
Spróbujmy to zrozumieć na przykładzie, jak możemy zintegrować Spocka z aplikacjami opartymi na Spring boot MVC.
c ++ pytania do wywiadu i odpowiedzi dla doświadczonych
Chociaż Spring ma bogaty zestaw adnotacji i dobrze integruje się z JUnit, Spock dodaje lub pomaga dodać łatwe do odczytania podejście do testowania w stylu BDD, dzięki czemu specyfikacje testów są bardzo czytelne.
O aplikacji
Będziemy używać aplikacji startowej rozruchu sprężynowego opartej na nachyleniu, z kontrolerem opartym na spoczynku implementującym punkt końcowy.
Wymagane zależności
Oprócz zależności sprężystego rozruchu, dodamy zwykłą zależność kompilacji groovy, a także zależność rdzenia Spocka. Inną zależnością opartą na Spocku jest Spock-wiosna , co pozwala specyfikacjom Spocka używać adnotacji opartych na Spring.
Poniżej wymieniono listę wymaganych zależności:
- implementacja „org.springframework.boot: spring-boot-starter”
- testImplementation „org.springframework.boot: spring-boot-starter-test”
- kompiluj „org.codehaus.groovy: groovy-all: 2.4.8”
- testCompile „org.spockframework: spock-core: 1.2-groovy-2.4”
- grupa testCompile: „org.spockframework”, nazwa: „spock-spring”, wersja: „1.2-groovy-2.4”
Pierwsze kroki
Zacznijmy od właściwego testu.
W pierwszym teście sprawdzimy, czy bean zostanie utworzony dla dodanej przez nas klasy kontrolera. W tym celu aplikacja powinna zostać uruchomiona po uruchomieniu testu.
Aby to osiągnąć, dodamy @ SpringBootTest adnotacja zapewniająca uruchomienie kontekstu aplikacji przed wykonaniem testu.
Poniżej znajduje się kod testowy:
@SpringBootTest class SampleSpringSpec extends Specification { @Autowired private WebController webController def 'when context is loaded then controller bean is created'() { expect: 'the WebController is created' webController != null } }
W powyższym kodzie widać, że użyliśmy @SpringBootTest adnotacja, która zapewnia uruchomienie ApplicationContext, zanim test zostanie wykonany, a także automatycznie połączyliśmy komponent bean WebController zgodnie z adnotacjami Spring.
Test sprawdza, czy komponent bean Webcontroller jest tworzony jako część kontekstu aplikacji.
Zobaczmy kolejny test, w którym trafimy do udostępnionego punktu końcowego przez kontroler sieciowy i zweryfikujemy kod odpowiedzi oraz tekst odpowiedzi za pomocą klas testowych platformy Spring, tj. MockMvc i MockMvcRequestBuilders.
Proszę zapoznać się z kodem testowym poniżej:
@AutoConfigureMockMvc(secure=false) @WebMvcTest() class SampleMvcSpec extends Specification{ @Autowired private MockMvc mvc def 'assert response and status code for /greeting'() { expect: 'status code as 200 and response string as Hello world!' mvc.perform(MockMvcRequestBuilders.get('/hello')) .andExpect(MockMvcResultMatchers.status().isOk()) .andReturn().response.contentAsString == 'Hello world!' } }
Integracja Spock Selenium
Oto samouczek wideo:
Zobaczmy teraz przykład, jak możemy zintegrować testy oparte na selenie przy użyciu Spocka. Nie wymagają one żadnej innej specyficznej zależności, ale ogólnie można wykorzystać istniejące sposoby, aby skuteczniej organizować testy selenu przy użyciu BDD.
W tym Przykład, zobaczymy prosty test selenu za pomocą ChromeWebDriver, który próbuje wyszukać słowo kluczowe w wyszukiwarce Google i zweryfikować tytuł strony wyników wyszukiwania.
class SeleniumSpec extends Specification { private static def WebDriver driver = new ChromeDriver() def 'cleanupSpec'() { if(driver != null) { driver.close() } } def 'selenium integration with spock'() { given: driver.navigate().to('https://www.google.co.in') WebElement searchBox = driver.findElement(By.cssSelector('input(name=q)')); WebElement submitSearchButton = driver.findElement(By.cssSelector('input(name=btnK)')); when: searchBox.sendKeys('India') Thread.sleep(5000) submitSearchButton.click() def title = driver.getTitle() then: title.toLowerCase()contains('india') } }
Zwróć uwagę, jak zadeklarowaliśmy wystąpienie webdrivera dla ChromeDriver i wykorzystaliśmy je w specyfikacji.
Ponadto w danym kroku zadeklarowaliśmy / zdefiniowaliśmy wszystkie elementy sieciowe, których wymagalibyśmy do wykonania testów.
Framework Spock może być również zintegrowany i używany z istniejącym frameworkiem Automation i możemy po prostu zastąpić testy oparte na Javie / JUnit Spockiem, aby wykorzystać moc programowania deklaratywnego w Groovy.
Wniosek
W tym samouczku zbadaliśmy różne sposoby integracji testów opartych na Spocku z innymi frameworkami i typami testów, takimi jak testy integracyjne i testy End-2-End.
Widzieliśmy przykłady integracji Spocka z frameworkiem Spring i testami integracji opartymi na Selenium. Podobnie, Spock może być również używany do pisania testów z klientami Rest w celu testowania integracji API opartych na REST.
Szybko przygotuj się do wywiadu ze Spockiem z nadchodzącym samouczkiem, który obejmuje listę najważniejszych pytań do wywiadu Spocka !!
POPRZEDNIA samouczek | NEXT Tutorial
rekomendowane lektury
- Pisanie testów jednostkowych w Spock Framework
- Pytania do wywiadu Spocka z odpowiedziami (najpopularniejsze)
- Spock Mocking and Stubbing (przykłady z samouczkami wideo)
- Testowanie oparte na danych lub parametryzowane za pomocą Spock Framework
- Samouczek Spocka: Testowanie ze Spockiem i Groovym
- Integracja Selenium z JMeter
- Różnice między testowaniem jednostkowym, testowaniem integracyjnym i testowaniem funkcjonalnym
- Testy funkcjonalne a testy niefunkcjonalne