From cd94bc7db005a46d5593271941e11b7acbed8fab Mon Sep 17 00:00:00 2001 From: Vickvick2002 Date: Thu, 19 Dec 2024 08:13:38 +0100 Subject: [PATCH 1/2] =?UTF-8?q?=C3=84ndere=20HitoriApp=20zu=20einer=20Inst?= =?UTF-8?q?anzmethode=20und=20implementiere=20Main-Klasse=20als=20Einstieg?= =?UTF-8?q?spunkt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Hitori/src/main/java/PR2/HitoriSpiel/GUI/HitoriApp.java | 2 +- Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/HitoriApp.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/HitoriApp.java index 5adf443..c32bbab 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/HitoriApp.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/HitoriApp.java @@ -3,7 +3,7 @@ package PR2.HitoriSpiel.GUI; import javax.swing.*; public class HitoriApp { - public static void start() { + public void start() { SwingUtilities.invokeLater(() -> { // Hauptfenster erstellen JFrame frame = new JFrame("Hitori - Das Spiel"); diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java b/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java index 96a5896..89c610a 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java @@ -5,6 +5,8 @@ import PR2.HitoriSpiel.GUI.HitoriApp; public class Main { public static void main(String[] args) { - HitoriApp.start(); + HitoriApp app = new HitoriApp(); + + app.start(); } } \ No newline at end of file -- 2.43.0 From 1244cb333d1742f8b1b21aeaed772fdf6cd5e4c7 Mon Sep 17 00:00:00 2001 From: Vickvick2002 Date: Thu, 19 Dec 2024 08:38:10 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Setze=20Namen=20f=C3=BCr=20Buttons=20in=20S?= =?UTF-8?q?tartMenu=20und=20passe=20Tests=20entsprechend=20an?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Hitori/pom.xml | 23 +++++++- .../java/PR2/HitoriSpiel/GUI/StartMenu.java | 13 +++-- Hitori/src/test/java/GUI/StartMenuTest.java | 53 +++++++++++++++++++ 3 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 Hitori/src/test/java/GUI/StartMenuTest.java diff --git a/Hitori/pom.xml b/Hitori/pom.xml index a65b7f7..e44b179 100644 --- a/Hitori/pom.xml +++ b/Hitori/pom.xml @@ -14,4 +14,25 @@ UTF-8 - \ No newline at end of file + + + + org.assertj + assertj-swing + 3.17.1 + test + + + junit + junit + 4.13.1 + test + + + org.junit.jupiter + junit-jupiter + 5.8.1 + test + + + diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java index 3544d23..7d88a1c 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java @@ -13,21 +13,28 @@ public class StartMenu extends JPanel { JButton continueButton = createButton("Spiel fortsetzen", 200, 30); JButton selectBoardButton = createButton("Spielfeld aussuchen", 200, 30); JButton randomBoardButton = createButton("Zufälliges Spielfeld", 200, 30); - JButton highscoreButton = createButton("Highscore anzeigen", 200, 30); + JButton highscorelistButton = createButton("Highscoreliste anzeigen", 200, 30); JButton exitButton = createButton("Spiel beenden", 200, 30); + // Namen für AssertJ-Swing setzen + continueButton.setName("continueButton"); + selectBoardButton.setName("selectBoardButton"); + randomBoardButton.setName("randomBoardButton"); + highscorelistButton.setName("highscorelistButton"); + exitButton.setName("exitButton"); + // ActionListener hinzufügen continueButton.addActionListener(e -> showMessage("Spiel fortsetzen wird implementiert.")); selectBoardButton.addActionListener(e -> showMessage("Spielfeld auswählen wird implementiert.")); randomBoardButton.addActionListener(e -> showMessage("Zufälliges Spielfeld wird gestartet.")); - highscoreButton.addActionListener(e -> showMessage("Highscore-Liste wird angezeigt.")); + highscorelistButton.addActionListener(e -> showMessage("Highscore-Liste wird angezeigt.")); exitButton.addActionListener(e -> System.exit(0)); // Buttons zum Panel hinzufügen this.add(continueButton); this.add(selectBoardButton); this.add(randomBoardButton); - this.add(highscoreButton); + this.add(highscorelistButton); this.add(exitButton); } diff --git a/Hitori/src/test/java/GUI/StartMenuTest.java b/Hitori/src/test/java/GUI/StartMenuTest.java new file mode 100644 index 0000000..3de0310 --- /dev/null +++ b/Hitori/src/test/java/GUI/StartMenuTest.java @@ -0,0 +1,53 @@ +package GUI; + +import PR2.HitoriSpiel.GUI.StartMenu; +import org.assertj.swing.edt.GuiActionRunner; +import org.assertj.swing.fixture.FrameFixture; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import javax.swing.*; + +import static org.assertj.core.api.Assertions.assertThat; + +public class StartMenuTest { + + private FrameFixture window; + + @BeforeEach + public void setUp() { + JFrame frame = GuiActionRunner.execute(() -> { + JFrame testFrame = new JFrame(); + testFrame.add(new StartMenu(testFrame)); + testFrame.pack(); + testFrame.setVisible(true); + return testFrame; + }); + window = new FrameFixture(frame); + } + + @AfterEach + public void tearDown() { + window.cleanUp(); + } + + @Test + public void testButtonsExist() { + // Buttons über ihre Namen finden und testen + assertThat(window.button("continueButton")).isNotNull(); + assertThat(window.button("selectBoardButton")).isNotNull(); + assertThat(window.button("randomBoardButton")).isNotNull(); + assertThat(window.button("highscorelistButton")).isNotNull(); + assertThat(window.button("exitButton")).isNotNull(); + } + + @Test + public void testButtonActions() { + window.button("continueButton").click(); + window.button("selectBoardButton").click(); + window.button("randomBoardButton").click(); + window.button("highscorelistButton").click(); + window.button("exitButton").click(); + } +} -- 2.43.0