{"id":8607,"date":"2017-07-22T15:00:30","date_gmt":"2017-07-22T13:00:30","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=8607"},"modified":"2020-04-03T14:43:43","modified_gmt":"2020-04-03T12:43:43","slug":"junit-5-parameterizedtest-mit-valuesource-oder-3-gruende-warum-man-keine-junit-tests-schreiben-sollte","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=8607","title":{"rendered":"JUnit 5 @ParameterizedTest mit @ValueSource oder 3 Gr\u00fcnde warum man keine JUnit Tests schreiben sollte!"},"content":{"rendered":"<p>In JUnit 5 gibt es nun die M\u00f6glichkeit, Testmethoden mit Parametern ausszuf\u00fchren. Anstatt der @Test Annnotation verwendet man die <strong>@ParameterizedTest<\/strong>. Nun braucht man noch eine Datenquelle mit <strong>@ValueSource<\/strong>. <\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/12\/20131211-184743.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/12\/20131211-184743.jpg\" alt=\"\" width=\"1274\" height=\"830\" class=\"aligncenter size-full wp-image-2316\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/12\/20131211-184743.jpg 1274w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/12\/20131211-184743-300x195.jpg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/12\/20131211-184743-1024x667.jpg 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Diese Klassen liegen in:<!--more--><\/p>\n<pre class=\"lang:xhtml decode:true \" >\r\n&lt;dependency&gt;\r\n\t&lt;groupId&gt;org.junit.jupiter&lt;\/groupId&gt;\r\n\t&lt;artifactId&gt;junit-jupiter-params&lt;\/artifactId&gt;\r\n\t&lt;version&gt;${junit.jupiter.version}&lt;\/version&gt;\r\n\t&lt;scope&gt;test&lt;\/scope&gt;\r\n&lt;\/dependency&gt;\t\t\r\n<\/pre>\n<p>und muss in der pom.xml erg\u00e4nzt werden.<\/p>\n<p>Es gibt unterschiedliche Typen (int, long, double &#8230;) von ValueSource. Hier ein Beispiel mit einem String Array:<\/p>\n<pre class=\"theme:eclipse lang:java decode:true \" >\t\r\n@DisplayName(\"Parameter Test mit unterschiedlichen URLs wenzlaff.de\")\r\n\t@ParameterizedTest\r\n\t@ValueSource(strings = { \"\/umgebung\/service\", \"\/umgebung\/mindmap\", \"\/umgebung\/version\" })\r\n\tpublic void parameterTesten(String hostServiceUrl) {\r\n\r\n\tString hostUrl = StandaloneServer.HOST + hostServiceUrl;\r\n\tClientResource clientResource = new ClientResource(hostUrl);\r\n\tUmgebung resource = clientResource.wrap(Umgebung.class);\r\n\r\n\tString vers = resource.getUmgebung();\r\n\tassertTrue(vers.length() &gt; 4);\r\n}\r\n<\/pre>\n<p>Es werden also drei Durchl\u00e4ufe ausgef\u00fchrt, und man kann gut sehen, welcher Test ausgef\u00fchrt wurde:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-11.43.49.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-11.43.49.png\" alt=\"\" width=\"384\" height=\"256\" class=\"aligncenter size-full wp-image-8612\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-11.43.49.png 384w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-11.43.49-300x200.png 300w\" sizes=\"auto, (max-width: 384px) 100vw, 384px\" \/><\/a><\/p>\n<p>Nun kann man auch noch den Anzeige Namen im Testlauf sch\u00f6ner machen, in dem die ParameterizedTest Annotation erg\u00e4nzt wird um<\/p>\n<p>@ParameterizedTest(name = <strong>&#8222;Testfall Nr. {index} mit URL Argument [{arguments}]&#8220;<\/strong>)<\/p>\n<p>Dann sieht das ganze nach der Ausf\u00fchrung so aus:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-12.16.09.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-12.16.09.png\" alt=\"\" width=\"444\" height=\"444\" class=\"aligncenter size-full wp-image-8622\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-12.16.09.png 444w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-12.16.09-150x150.png 150w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-12.16.09-300x300.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/07\/Bildschirmfoto-2017-07-22-um-12.16.09-100x100.png 100w\" sizes=\"auto, (max-width: 444px) 100vw, 444px\" \/><\/a><\/p>\n<p>Man kann also auf die Parameter zugreifen mit: index, arguments oder auch i.<\/p>\n<p>Weitere Details <a href=\"https:\/\/junit.org\/junit5\/docs\/current\/user-guide\/#writing-tests-parameterized-tests\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> (engl.) oder auf diesem <a href=\"http:\/\/blog.wenzlaff.de\/?cat=2953\" target=\"_blank\" rel=\"noopener noreferrer\">Block in Kategorie JUnit 5<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In JUnit 5 gibt es nun die M\u00f6glichkeit, Testmethoden mit Parametern ausszuf\u00fchren. Anstatt der @Test Annnotation verwendet man die @ParameterizedTest. Nun braucht man noch eine Datenquelle mit @ValueSource. Diese Klassen liegen in:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,5,2953,2914,79,2658],"tags":[2178,55,2943,2954,2955,194],"class_list":["post-8607","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-junit-5","category-oxygen","category-programmierung","category-test-thema","tag-java","tag-junit","tag-junit-5","tag-junit-test","tag-jupiter","tag-test-2"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/8607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8607"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/8607\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8607"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}