{"id":12854,"date":"2019-03-09T13:11:02","date_gmt":"2019-03-09T12:11:02","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=12854"},"modified":"2020-01-22T18:55:37","modified_gmt":"2020-01-22T17:55:37","slug":"junit-quickie-wie-koennen-die-testmethoden-einer-klasse-automatisch-in-zufaelliger-reihenfolge-pseudozufall-ausgefuehrt-werden","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=12854","title":{"rendered":"JUnit Quickie: Wie k\u00f6nnen die Testmethoden einer Klasse automatisch in zuf\u00e4lliger Reihenfolge (Pseudozufall) ausgef\u00fchrt werden?"},"content":{"rendered":"<p>Wie k\u00f6nnen die Testmethoden einer Klasse automatisch in <strong>zuf\u00e4lliger<\/strong> Reihenfolge ausgef\u00fchrt werden? Ab JUnit 5.4 geht das mit der Annotation <strong>@TestMethodOrder<\/strong>. Es wird nur die @TestMethodOrder(MethodOrderer.<strong>Random<\/strong>.class) Annotation an der jeweiligen Test-Klasse ben\u00f6tigt. Die Zufallsfunktion wird mit Hilfe der System.nanoTime() Funktion erzeugt. Also ein <a href=\"https:\/\/de.wikipedia.org\/wiki\/Pseudozufall\" rel=\"noopener noreferrer\" target=\"_blank\">Pseudozufall<\/a>. Aber f\u00fcr Test reicht es.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Zufall.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Zufall.jpg\" alt=\"\" width=\"2732\" height=\"2048\" class=\"aligncenter size-full wp-image-12861\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Zufall.jpg 2732w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Zufall-300x225.jpg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Zufall-768x576.jpg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Zufall-1024x768.jpg 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Wir verwenden diese Testklasse:<!--more--><\/p>\n<pre class=\"lang:java decode:true \" >\r\nimport org.junit.jupiter.api.MethodOrderer.Random;\r\nimport org.junit.jupiter.api.Order;\r\nimport org.junit.jupiter.api.Test;\r\nimport org.junit.jupiter.api.TestMethodOrder;\r\n\r\n\/**\r\n * Test der Order Annotationen.\r\n * \r\n * @author Thomas Wenzlaff\r\n *\r\n *\/\r\n@TestMethodOrder(Random.class)\r\nclass OrderTest {\r\n\r\n\t@Test\r\n\tvoid aMethode() {\r\n\t\tSystem.out.println(\"a Methode im Code\");\r\n\t}\r\n\r\n\t@Test\r\n\tvoid cMethode() {\r\n\t\tSystem.out.println(\"c Methode im Code\");\r\n\t}\r\n\r\n\t@Test\r\n\t@Order(30)\r\n\tvoid bMethote() {\r\n\t\tSystem.out.println(\"b Methode im Code \");\r\n\t}\r\n}<\/pre>\n<p>Und nun f\u00fchren wir diese Klasse zweimal aus:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Bildschirmfoto-2019-03-09-um-12.50.12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Bildschirmfoto-2019-03-09-um-12.50.12.png\" alt=\"\" width=\"761\" height=\"626\" class=\"aligncenter size-full wp-image-12856\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Bildschirmfoto-2019-03-09-um-12.50.12.png 761w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Bildschirmfoto-2019-03-09-um-12.50.12-300x247.png 300w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><\/p>\n<p>Die Methoden wurden in der Reihenfolge <strong>bca<\/strong> ausgef\u00fchrt und beim zweiten mal<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Bildschirmfoto-2019-03-09-um-12.50.48.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Bildschirmfoto-2019-03-09-um-12.50.48.png\" alt=\"\" width=\"725\" height=\"621\" class=\"aligncenter size-full wp-image-12857\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Bildschirmfoto-2019-03-09-um-12.50.48.png 725w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Bildschirmfoto-2019-03-09-um-12.50.48-300x257.png 300w\" sizes=\"auto, (max-width: 725px) 100vw, 725px\" \/><\/a><\/p>\n<p>in der Reihenfolge <strong>cba<\/strong>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie k\u00f6nnen die Testmethoden einer Klasse automatisch in zuf\u00e4lliger Reihenfolge ausgef\u00fchrt werden? Ab JUnit 5.4 geht das mit der Annotation @TestMethodOrder. Es wird nur die @TestMethodOrder(MethodOrderer.Random.class) Annotation an der jeweiligen Test-Klasse ben\u00f6tigt. Die Zufallsfunktion wird mit Hilfe der System.nanoTime() Funktion erzeugt. Also ein Pseudozufall. Aber f\u00fcr Test reicht es. Wir verwenden diese Testklasse:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,5,3172,3423,1361,2884,2953,2658],"tags":[],"class_list":["post-12854","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-java-10","category-java-11","category-java-8","category-java-9","category-junit-5","category-test-thema"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/12854","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=12854"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/12854\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12854"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}