{"id":154,"date":"2015-11-02T08:00:29","date_gmt":"2015-11-02T07:00:29","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=154"},"modified":"2023-07-10T16:14:41","modified_gmt":"2023-07-10T14:14:41","slug":"wstep-do-automatyzacji-testow-w-visual-studio-konfiguracja-srodowiska","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/wstep-do-automatyzacji-testow-w-visual-studio-konfiguracja-srodowiska\/","title":{"rendered":"Wst\u0119p do automatyzacji test\u00f3w w Visual Studio \u2013 konfiguracja \u015brodowiska"},"content":{"rendered":"\n<p>Istnieje wiele narz\u0119dzi wspieraj\u0105cych r\u00f3\u017cne aspekty testowania. Jedne z nich s\u0105 dost\u0119pne bezp\u0142atnie i mog\u0105 by\u0107 u\u017cywane w celach komercyjnych w \u015brodowiskach produkcyjnych, drugie za\u015b \u00ad\u2013 p\u0142atne \u2013 oferuj\u0105 znacznie wi\u0119cej mo\u017cliwo\u015bci, posiadaj\u0105 bardziej rozbudowane mechanizmy, a tak\u017ce oferuj\u0105 bogatsze wsparcie techniczne, np. poprzez \u0142atwo dost\u0119pn\u0105, zasobn\u0105 w przyk\u0142ady dokumentacj\u0119, czy fora. Nie oznacza to jednak, \u017ce darmowe edycje program\u00f3w s\u0105 s\u0142absze i mniej miarodajne. Znaczna cz\u0119\u015b\u0107 bezp\u0142atnych narz\u0119dzi efektywnie symuluje z\u0142o\u017cone zachowania co wp\u0142ywa na wiarygodno\u015b\u0107 test\u00f3w.<\/p>\n\n\n\n<p>Jednym z narz\u0119dzi wspieraj\u0105cych testowanie automatyczne jest Visual Studio. Istnieje jego darmowa wersja \u2013 Express. Produkty <a href=\"http:\/\/sii.pl\/offer-page\/testing\/\">Visual Studio Express<\/a> dost\u0119pne s\u0105 nieodp\u0142atnie i mog\u0105 by\u0107 swobodnie u\u017cywane w celach komercyjnych, co podlega postanowieniom licencyjnym. Na oficjalnej stronie Visuala mo\u017cna pobra\u0107 nast\u0119puj\u0105ce wersje:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Express for Desktop (tworzenie aplikacji\/test\u00f3w program\u00f3w desktopowych)<\/li>\n\n\n\n<li>Express for Web (tworzenie witryn sieci Web\/test\u00f3w stron internetowych)<\/li>\n\n\n\n<li>Express for Windows (tworzenie aplikacji na platform\u0119 Windows\/testy aplikacji)<\/li>\n\n\n\n<li>Team Foundation Server Express (kontrola kodu \u017ar\u00f3d\u0142owego, zarz\u0105dzanie projektami)<\/li>\n<\/ol>\n\n\n\n<p>W niniejszym artykule zajmiemy si\u0119 wersj\u0105 Express for Desktop (do pobrania tutaj: <a href=\"https:\/\/www.visualstudio.com\/pl-pl\/products\/visual-studio-express-vs.aspx\" rel=\"nofollow\" >https:\/\/www.visualstudio.com\/pl-pl\/products\/visual-studio-express-vs.aspx<\/a>). Aby zacz\u0105\u0107 pisa\u0107 testy nale\u017cy dla tej wersji Visuala posiada\u0107 tak\u017ce program Inspect, kt\u00f3ry jest dostarczany razem z Windows SDK. Dla wersji 8.1. SDK mo\u017cna pobra\u0107 st\u0105d: <a href=\"https:\/\/msdn.microsoft.com\/pl-PL\/windows\/desktop\/bg162891\" rel=\"nofollow\" >https:\/\/msdn.microsoft.com\/pl-PL\/windows\/desktop\/bg162891<\/a>. Inspect s\u0142u\u017cy do namierzania kontrolek aplikacji desktopowych oraz do pobierania ich w\u0142a\u015bciwo\u015bci, jak np. automation ID, klasa bazowa, typ itd. W\u0142a\u015bciwo\u015bci te pomagaj\u0105 w pisaniu metod s\u0142u\u017c\u0105cych do wchodzenia w interakcj\u0119 z testowan\u0105 aplikacj\u0105. Dla p\u0142atnych wersji Visual Studio istnieje mo\u017cliwo\u015b\u0107 skorzystania z wbudowanego narz\u0119dzia Spy++ lub skorzystanie z opcji nagrywania dla Coded UI. Ale te rozwi\u0105zania zostan\u0105 zaprezentowane w innym artykule.<\/p>\n\n\n\n<p>Aby uruchomi\u0107 Inspect.exe nale\u017cy przej\u015b\u0107 do \u015bcie\u017cki: &#8222;<em>C:\\Program Files\\Microsoft SDKs\\Windows\\wersja SDK\\Bin\\Inspect.exe<\/em>&#8222;. Aby namierzy\u0107 w\u0142a\u015bciw\u0105 kontrolk\u0119 i pobra\u0107 jej w\u0142a\u015bciwo\u015bci, nale\u017cy najecha\u0107 na ni\u0105 kursorem myszki. Istotn\u0105 rzecz\u0105 przed rozpocz\u0119ciem namierzania jest przestawienie w menu interfejsu z <em>MSAA<\/em> (<em>Microsoft Active Accessibility<\/em>) na UI Automation.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/10\/inspect_testing.png\"><img decoding=\"async\" width=\"690\" height=\"187\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/10\/inspect_testing.png\" alt=\"inspect_testing\" class=\"wp-image-278\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/10\/inspect_testing.png 690w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/10\/inspect_testing-300x81.png 300w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Tyle wystarczy, aby rozpocz\u0105\u0107 prac\u0119. Uruchamiamy Visual Studio, tworzymy projekt wybieraj\u0105c odpowiedni\u0105 zak\u0142adk\u0119 (Visual C# -&gt; Test -&gt; Unit Test Project). Okno programu podzielone jest na sekcje: Test Explorer, gdzie znajduje si\u0119 lista wszystkich napisanych test\u00f3w; Solution Explorer, w kt\u00f3rym znajduje si\u0119 ca\u0142e drzewo projektu. Mo\u017cemy z tej sekcji przej\u015b\u0107 tak\u017ce do Team Explorer, gdzie mo\u017cliwe jest pod\u0142\u0105czenie repozytorium i ca\u0142a obs\u0142uga systemu kontroli wersji odbywa si\u0119 ju\u017c przez Visuala oraz sekcja, w kt\u00f3rej piszemy kod. W kolejnym wpisie zobaczycie, jak stworzy\u0107 prosty test oraz co nale\u017cy ustawi\u0107, aby test zadzia\u0142a\u0142.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\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;154&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;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;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\\\/5 ( vote: 1)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Wst\u0119p do automatyzacji test\u00f3w w Visual Studio \u2013 konfiguracja \u015brodowiska&quot;,&quot;width&quot;:&quot;110.5&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: 110.5px;\">\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\/5 ( vote: 1)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Istnieje wiele narz\u0119dzi wspieraj\u0105cych r\u00f3\u017cne aspekty testowania. Jedne z nich s\u0105 dost\u0119pne bezp\u0142atnie i mog\u0105 by\u0107 u\u017cywane w celach komercyjnych &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/wstep-do-automatyzacji-testow-w-visual-studio-konfiguracja-srodowiska\/\">Continued<\/a><\/p>\n","protected":false},"author":37,"featured_media":498,"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":[103,102],"class_list":["post-154","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testowanie","tag-autoamtyzacja-testow","tag-visual-studio"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2015\/10\/Fotolia_88830082_L.jpg","category_names":["Testowanie"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/154"}],"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\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=154"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/154\/revisions"}],"predecessor-version":[{"id":22803,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/154\/revisions\/22803"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/498"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}