{"id":972,"date":"2015-12-08T09:00:05","date_gmt":"2015-12-08T08:00:05","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=972"},"modified":"2023-05-08T15:02:40","modified_gmt":"2023-05-08T13:02:40","slug":"tworzenie-zewnetrznej-klasy-do-testow-soapui","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/tworzenie-zewnetrznej-klasy-do-testow-soapui\/","title":{"rendered":"Tworzenie zewn\u0119trznej klasy do test\u00f3w SoapUI"},"content":{"rendered":"\n<p>SoapUI jest to oprogramowanie do <a href=\"http:\/\/sii.pl\/offer-page\/testing\/\">testowania aplikacji<\/a> pos\u0142uguj\u0105cych si\u0119 protoko\u0142em SOAP (Simple Object Acces Protocol) polegaj\u0105cej na wymianie informacji mi\u0119dzy aplikacjami za pomoc\u0105 WebService\u2019\u00f3w komunikuj\u0105cych si\u0119 poprzez komunikaty w formacie XML.<\/p>\n\n\n\n<p>Od tego artyku\u0142u przez kilka nast\u0119pnych chcia\u0142bym zaprezentowa\u0107 proces tworzenia i wykorzystywania zewn\u0119trznej biblioteki Java w projektach z wykorzystaniem narz\u0119dzia SoapUI.<\/p>\n\n\n\n<p>Dzisiejszy wpis b\u0119dzie omawia\u0107 nast\u0119puj\u0105ce tematy:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Tworzenie projektu java z bibliotek\u0105 umo\u017cliwiaj\u0105c\u0105 wykonywanie operacji na testach SoapUI<\/li><li>Tworzenie klasy generuj\u0105cej przyk\u0142adowe dane do test\u00f3w<\/li><li>Wczytanie zewn\u0119trznej biblioteki java do SoapUI<\/li><li>Przyk\u0142adowe wykorzystanie wcze\u015bniej napisanej klasy<\/li><\/ul>\n\n\n\n<p>W kolejnych wpisach b\u0119d\u0119 stara\u0142 si\u0119 rozwin\u0105\u0107 temat, tak aby u\u017cytkownik wiedzia\u0142 co dzi\u0119ki takiemu rozwi\u0105zaniu jest w stanie uzyska\u0107. Wpisy s\u0105 skierowane g\u0142\u00f3wnie do os\u00f3b z co najmniej podstawow\u0105 znajomo\u015bci\u0105 narz\u0119dzia SoapUI oraz z dobr\u0105 znajomo\u015bci\u0105 Javy 1.6+.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u015arodowisko z kt\u00f3rego korzystam to: Eclipse Mars 4.5.1, SoapUI 5.2.1 oraz JavaSE&nbsp;1.7.<\/strong><\/h2>\n\n\n\n<p>Interfejsy wykorzystywane w SoapUI podczas cyklu wpis\u00f3w s\u0105 napisane przeze mnie i nie s\u0105 dost\u0119pne dla u\u017cytkownik\u00f3w zewn\u0119trznych, st\u0105d polecam skorzysta\u0107 a przyk\u0142adowych interfejs\u00f3w dost\u0119pnych w internecie.<\/p>\n\n\n\n<p>Na pocz\u0105tek stw\u00f3rzmy projekt Java:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p1-e1448362437484.png\"><img decoding=\"async\" width=\"667\" height=\"840\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p1-e1448362437484.png\" alt=\"p1\" class=\"wp-image-978\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Teraz do projektu za\u0142\u0105czamy biblioteki kt\u00f3re umo\u017cliwi\u0105 nam operowanie na elementach SoapUI:<\/p>\n\n\n\n<p>Klikamy drugim klawiszem na projekt -&gt; BuildPath &#8211; &gt; Configure BuildPath\u2026<\/p>\n\n\n\n<p>A nast\u0119pnie przechodzimy do zak\u0142adki Libraries:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p2-e1448362390301.png\"><img decoding=\"async\" width=\"881\" height=\"627\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p2-e1448362390301.png\" alt=\"p2\" class=\"wp-image-977\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Naciskamy \u201eAdd External Jars\u2026\u201d i wybieramy \u015bcie\u017ck\u0119 \u201e{SoapUI_Install_Folder}\/Bin\u201d i wskazujemy na bibliotek\u0119 o nazwie \u201eSoapUI{versja }.jar\u201d i za\u0142\u0105czamy ja do projektu.<\/p>\n\n\n\n<p>W moim interfejsie mam metod\u0119 zarejestruj, dodaje ona do bazy danych u\u017cytkownika z okre\u015blonymi przeze mnie danymi gdzie login oraz email musz\u0105 by\u0107 unikatowe i chcia\u0142bym, aby te dwie warto\u015bci zmienia\u0142y si\u0119 w danych testowych, a konkretniej w CustomProperties mojego Test Case\u2019a przy ka\u017cdym wywo\u0142aniu testu:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p3-e1448362474165.png\"><img decoding=\"async\" width=\"1563\" height=\"840\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p3-e1448362474165.png\" alt=\"p3\" class=\"wp-image-976\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Doda\u0142em zatem krok groovy script, tak jak na za\u0142\u0105czonym screenie:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p4-e1448361761111.png\"><img decoding=\"async\" width=\"1563\" height=\"840\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p4-e1448361761111.png\" alt=\"p4\" class=\"wp-image-975\"\/><\/a><\/figure><\/div>\n\n\n\n<p><strong>Zwr\u00f3\u0107cie prosz\u0119 uwag\u0119 na to, co wskazuje druga strza\u0142ka \u201eScript is invoked with log, context and testRunner variables\u201d te 3 zmienne odpowiadaj\u0105 za mo\u017cliwo\u015b\u0107 operowania Soapem z poziomu groovy scriptu i b\u0119d\u0105 nam niezb\u0119dne podczas u\u017cywania klasy zewn\u0119trznej.<\/strong><\/p>\n\n\n\n<p>Teraz mo\u017cemy utworzy\u0107 klas\u0119 java, kt\u00f3ra b\u0119dzie nam generowa\u0107 odpowiednie dane. Napisz\u0119 w niej 2 metody, kt\u00f3re b\u0119d\u0105 odpowiedzialne za generowanie adresu email oraz loginu:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p5.png\"><img decoding=\"async\" width=\"906\" height=\"718\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p5.png\" alt=\"p5\" class=\"wp-image-974\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p5.png 906w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p5-300x238.png 300w\" sizes=\"(max-width: 906px) 100vw, 906px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Powy\u017csza klasa, tak jak napisa\u0142em wcze\u015bniej, ma dwie metody i <strong>kontruktor przyjmuj\u0105cy \u201eMockTestRunner\u201d<\/strong> ze wzgl\u0119du na to \u017ce <strong>takiego w\u0142a\u015bnie typu jest testRunner znajduj\u0105cy si\u0119 w Groovy Script Test Step<\/strong>.<\/p>\n\n\n\n<p>Za jego pomoc\u0105, jak wida\u0107 w oznaczonych liniach, dosta\u0142em si\u0119 do przypadku testowego i zedytowa\u0142em pola \u201eemail\u201d oraz \u201eLogin\u201d.<\/p>\n\n\n\n<p>Aby u\u017cy\u0107 ww. klasy jako zewn\u0119trznej biblioteki, nale\u017cy wyexportowa\u0107 nasz projekt do jara:<\/p>\n\n\n\n<p>Drugi klawisz myszy na projekt -&gt; export -&gt; java -&gt; Jar File, dodajemy nazw\u0119 i wybieramy miejsce docelowe dla zapisu.<\/p>\n\n\n\n<p>Tak przygotowan\u0105 bibliotek\u0119, dodajemy do katalogu: \u201e{SoapUI_Install_Folder}\/bin\/ext\u201d i restartujemy soapUI\u2019a poniewa\u017c zaczytuje on biblioteki zewn\u0119trzne tylko podczas startu.<\/p>\n\n\n\n<p>Teraz z biblioteki mo\u017cemy korzysta\u0107 w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p6-e1448362456159.png\"><img decoding=\"async\" width=\"1221\" height=\"840\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/p6-e1448362456159.png\" alt=\"p6\" class=\"wp-image-973\"\/><\/a><\/figure><\/div>\n\n\n\n<p>W nast\u0119pnym artykule rozwin\u0119 nasz\u0105 bibliotek\u0119 i poka\u017c\u0119 jakie dodatkowe korzy\u015bci daje za\u0142\u0105czenie jej do swojego projektu.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>Chcesz lepiej zrozumie\u0107 aplikacje i systemy, kt\u00f3re testujesz? Do\u0142\u0105cz do ModernTester, poznaj najpotrzebniejsze narz\u0119dzia, frameworki oraz j\u0119zyki programowania i \u0107wicz na specjalnie przygotowanych \u015brodowiskach testowych: <a href=\"https:\/\/moderntester.sii.pl\/\" rel=\"nofollow\" >Platforma e-learningowa ModernTester<\/a><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;972&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;7&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;4.4&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;4.4\\\/5 ( votes: 7)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Tworzenie zewn\u0119trznej klasy do test\u00f3w SoapUI&quot;,&quot;width&quot;:&quot;122.1&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 122.1px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            4.4\/5 ( votes: 7)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>SoapUI jest to oprogramowanie do testowania aplikacji pos\u0142uguj\u0105cych si\u0119 protoko\u0142em SOAP (Simple Object Acces Protocol) polegaj\u0105cej na wymianie informacji mi\u0119dzy &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/tworzenie-zewnetrznej-klasy-do-testow-soapui\/\">Continued<\/a><\/p>\n","protected":false},"author":56,"featured_media":921,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1317],"tags":[145,144,146],"class_list":["post-972","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testowanie","tag-external-class","tag-soapui","tag-testing"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/11\/crm.jpg","category_names":["Testowanie"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/972"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/56"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=972"}],"version-history":[{"count":3,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/972\/revisions"}],"predecessor-version":[{"id":21416,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/972\/revisions\/21416"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/921"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}