Init
This commit is contained in:
commit
57ef7d2739
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
.vscode/settings.json
|
||||
.gitignore
|
81
README.md
Normal file
81
README.md
Normal file
@ -0,0 +1,81 @@
|
||||
# Software Engineering im Studiengang Media Engineering
|
||||
|
||||
## Assignment "TDD Einführung"
|
||||
|
||||
### Ausgangssituation
|
||||
|
||||
#### Test Driven Development (TDD)
|
||||
|
||||
Bei TDD gilt die Regel: Produktivcode darf erst geschrieben werden, wenn
|
||||
ein Test vorliegt, der scheitert. Und auch dann soll nur gerade so
|
||||
viel Code geschrieben werden, um den Testfall (und alle anderen Tests)
|
||||
erfolgreich ausführen zu können.
|
||||
|
||||
#### Struktur des Assignments
|
||||
|
||||
Das Assignment besteht aus zwei Java-Klassen:
|
||||
|
||||
- <code>TriangleChecker</code> enthält den Produktivcode
|
||||
- <code>TriangleCheckerTest</code> enthält die Tests
|
||||
|
||||
Mit Hilfe von TDD soll insbesondere die Methode
|
||||
|
||||
<code>
|
||||
checkTriangle(float a, float b, float c)
|
||||
</code>
|
||||
|
||||
entwickelt werden. Diese Methode hat die Aufgabe, anhand
|
||||
der übergebenen drei Seitenlängen zu entscheiden, ob es
|
||||
sich um ein normales, ein gleichschenkliges, ein
|
||||
gleichseitiges oder gar kein Dreieck handelt.
|
||||
|
||||
|
||||
### Aufgabenstellung
|
||||
|
||||
#### Normales Dreieck
|
||||
|
||||
Mit dem Assignment kommt ein erster Testfall,
|
||||
der überprüft, ob ein normales Dreieck richtig erkannt
|
||||
wird. Sorgen Sie dafür, dass der Testfall nicht mehr scheitert.
|
||||
Achten Sie darauf, dass Sie nicht mehr implementieren, als
|
||||
zur Lösung dieses Testfalls notwendig ist. Weitere
|
||||
Fälle müssen noch nicht erkannt werden.
|
||||
|
||||
#### Gleichseitiges Dreieck
|
||||
|
||||
Erstellen Sie nun einen Testfall, der überprüft,
|
||||
ob ein gleichseitiges Dreieck erkannt wird.
|
||||
Da Sie bisher nur normale Dreiecke identifizieren,
|
||||
wird dieser Testfall zunächst scheitern.
|
||||
|
||||
Nehmen Sie nun minimale Änderungen am Produktivcode vor,
|
||||
so dass beide Testfälle fehlerfrei ausgeführt werden.
|
||||
|
||||
#### Kein Dreieck
|
||||
|
||||
Es gibt Zahlenkombinationen, die nicht zu einem
|
||||
Dreieck passen (z.B. negative Zahlen oder
|
||||
eine überlange Seite, so dass die anderen beiden
|
||||
Seiten das Dreieck nicht abschließen können).
|
||||
|
||||
Erstellen Sie jeweils eigene Testfälle für diese
|
||||
Art von Zahlenkombinationen. Das sind mindestens
|
||||
6 weitere Testfälle (warum?).
|
||||
|
||||
Korrigieren Sie anschließend den Produktivcode,
|
||||
so dass alle Tests durchlaufen.
|
||||
|
||||
#### Gleichschenkliges Dreieck
|
||||
|
||||
Schließlich sollen noch gleichschenklige Dreiecke
|
||||
erkannt werden. Dabei soll die
|
||||
Methode stets die genaueste Information
|
||||
zurückliefern, d.h.
|
||||
- bei einem gleichseitigen Dreieck *EQUILATERAL*, auch wenn
|
||||
ein gleichseitiges Dreieck natürlich auch gleichschenklig
|
||||
ist.
|
||||
- bei einem gleichschenkligem Dreieck *ISOSCELES*, auch wenn
|
||||
ein gleichschenkliges Dreieck natürlich auch ein
|
||||
normales Dreieck ist.
|
||||
|
||||
Verwenden Sie auch hier die TDD-Vorgehensweise.
|
13
TriangleCheckerTDD.iml
Normal file
13
TriangleCheckerTDD.iml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="jars" level="project" />
|
||||
</component>
|
||||
</module>
|
BIN
jars/hamcrest-core-1.3.jar
Normal file
BIN
jars/hamcrest-core-1.3.jar
Normal file
Binary file not shown.
BIN
jars/junit-4.12.jar
Normal file
BIN
jars/junit-4.12.jar
Normal file
Binary file not shown.
54
src/TriangleChecker.java
Normal file
54
src/TriangleChecker.java
Normal file
@ -0,0 +1,54 @@
|
||||
import java.util.Scanner;
|
||||
|
||||
public class TriangleChecker {
|
||||
|
||||
public enum TriangleType {
|
||||
NONE,
|
||||
NORMAL,
|
||||
ISOSCELES, // Gleichschenklig
|
||||
EQUILATERAL // Gleichseitig
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner s = new Scanner(System.in);
|
||||
System.out.println("Geben Sie die Seitenlängen ein.");
|
||||
float a = enterFloat(s, "a: ");
|
||||
float b = enterFloat(s, "b: ");
|
||||
float c = enterFloat(s, "c: ");
|
||||
s.close();
|
||||
printAnalysis(a, b, c);
|
||||
}
|
||||
|
||||
// Eingabe einer Seitenlänge
|
||||
private static float enterFloat(Scanner s, String prompt) {
|
||||
System.out.print(prompt);
|
||||
return s.nextFloat();
|
||||
}
|
||||
|
||||
// Ausgabe der ermittelten Dreiecksart
|
||||
private static void printAnalysis(float a, float b, float c) {
|
||||
TriangleType type = checkTriangle(a, b, c);
|
||||
switch (type) {
|
||||
case NONE:
|
||||
System.out.println("Kein Dreieck");
|
||||
break;
|
||||
case NORMAL:
|
||||
System.out.println("Dreieck");
|
||||
break;
|
||||
case ISOSCELES:
|
||||
System.out.println("Gleichschenkliges Dreieck");
|
||||
break;
|
||||
case EQUILATERAL:
|
||||
System.out.println("Gleichseitiges Dreieck");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Analyse der Dreiecksart
|
||||
public static TriangleType checkTriangle(float a, float b, float c) {
|
||||
return TriangleType.NONE;
|
||||
}
|
||||
|
||||
|
||||
}
|
22
test/TriangleCheckerTest.java
Normal file
22
test/TriangleCheckerTest.java
Normal file
@ -0,0 +1,22 @@
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class TriangleCheckerTest {
|
||||
|
||||
@Test
|
||||
public void testValidTriangle() {
|
||||
|
||||
// Arrange
|
||||
float a = 2;
|
||||
float b = 3;
|
||||
float c = 4;
|
||||
|
||||
// Act
|
||||
TriangleChecker.TriangleType type = TriangleChecker.checkTriangle(a, b, c);
|
||||
|
||||
// Assert
|
||||
assertEquals(TriangleChecker.TriangleType.NORMAL, type);
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user