Editing Java - Unit Testing

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
==Tag 1==
==Tag 1==
===JUnit===
===JUnit===
====Aufgabe: Tic Tac Toe====


Damit Unit Tests funktionieren, muss man JUnit 5 zu dem class path hinzufügen. Hierzu kann man die Quick Fix Funktion nutzen (Alt + Eingabe bei InelliJ oder Strg + 1 bei Eclipse).
Angehängt ist ein Beispiel wie das TicTacToe Spiel aussehen könnte:
In order for the Unit Tests to work, you need to add JUnit5 to the class path. When you hover over the @Test annotation in the test class and press Alt+Einfg you should get a suggestion that provides the Add JUnit5 to classpath functionality.
Goal: In the end an examplaray TicTacToe game should look like this:
Welcome to TicTacToe
Player 1 choose your field [1-9]
5
| |
|X|
| |
Player 2 choose your field [1-9]
1
O| |
  |X|
  | |
Player 1 choose your field [1-9]
3
O| |X
  |X|
  | |
Player 2 choose your field [1-9]
7
O| |X
  |X|
O| |
Player 1 choose your field [1-9]
4
O| |X
X|X|
O| |
Player 2 choose your field [1-9]
6
O| |X
X|X|O
O| |
Player 1 choose your field [1-9]
8
O| |X
X|X|O
O|X|
Player 2 choose your field [1-9]
2
O|O|X
X|X|O
O|X|
Player 1 choose your field [1-9]
9
O|O|X
X|X|O
O|X|X
The game is over. It' a draw.
Or another game with an early win:
Welcome to TicTacToe
Player 1 choose your field [1-9]
1
X| |
  | |
  | |
Player 2 choose your field [1-9]
5
X| |
  |O|
  | |
Player 1 choose your field [1-9]
2
X|X|
  |O|
  | |
Player 2 choose your field [1-9]
4
X|X|
O|O|
  | |
Player 1 choose your field [1-9]
3
X|X|X
O|O|
  | |
The game is over. Player 1 won!
Erstelle Unittests, welche alle möglichen Siegbedingungen testen. Die Code Coverage der Methode sollte 100% betragen.
Design unit tests covering all possible winning scenarios. Your tests should cover the entire method used for evaluating wins.
==Tag 2==
====Aufgabe: Potenzberechnung TDD ====
====Aufgabe: Potenzberechnung TDD ====
Klone das Projekt von Github: [https://github.com/CODERS-BAY-Coding/UnitTesting.git]
Klone das Projekt von Github: [https://github.com/CODERS-BAY-Coding/UnitTesting.git]
Line 7: Line 126:


Alle weiteren Informationen findest du im Projekt in der Klasse SquareTest.
Alle weiteren Informationen findest du im Projekt in der Klasse SquareTest.
===Kompetenzcheck===
====Aufgabe: Sum of Two mit Tests====


===Kompetenzcheck===
Gegeben sind zwei int-Arrays a und b, mit beliebigen Werten und ein Zielwert
====Aufgabe: Unit Tests Stack und Queue====
(target value) v. Finde heraus, ob es ein Nummernpaar gibt, wobei ein Wert aus a
und der andere Wert aus b sein muss, die in Summe den Zielwert v ergeben. Es soll
true zurückgegeben werden, falls es so ein Paar gibt, andernfalls false.


In der letzten Kompetenz hast du mit deiner eigenen Liste einen Stack und eine Queue implementieret.
Schreibe die Methode sumOfTwo(int[] a, int[] b, int v) wie oben beschrieben.
Die Lösung soll möglichst effizient sein, also kein!! Bruteforce.


Schreibe nun Tests für diese beiden Klassen. Achte dabei darauf, dass alle Methoden getestet werden, auch Randfälle und Exceptions solltest du berücksichtigen.
Hier folgen zwei Beispiele für das oben beschriebene Problem:
int[] a = [1,2,3];
int[] b = [10,20,30,40];
int v = 42;
Die Methode sumOfTwo gibt true zurück, da 40 + 2 = 42 ist.
a und b müssen nicht sortiert sein und können auch mehrmals den gleichen Wert
beinhalten.
int[] a = {0,0,-5,30212};
int[] b = {-10,40,-3,9};
int v = -8;
Es wird wieder true returned, da −5 + (−3) = −8 ist.
Wichtig: Denke daran, dass Arrays in Java 231 − 1 Elemente enthalten können
*kein Bruteforce.
*HashSets sind hilfreich, da sie einfügen und lesen in effizienter und vor allem
konstanter Zeit ermöglichen.
https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/
util/HashSet.html
// HashSet für int - Werte
HashSet<Integer> hashSet = new HashSet<>();
Mit Bruteforce ist gemeint, dass jedes einzelne Element aus a mit jedem einzelnen
Element aus b addiert wird und danach mit v verglichen wird. Hier ein Beispiel:
a = [1, 2, 3]
b = [4, 5, 6]
v = 7
a[0] = 1
b[0] + a[0] = 7?
.
.
b[2] + a[0] = 7
return true

Please note that all contributions to Coders.Bay Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see CB Wiki:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)