Wieso findet mein Programm die Cookies nicht(Java, Selenium)?

Hallo,ich arbeite grad an einem Programm und zwar an einem Automatischen Login weil ich das bald im Büro brauch deswegen benutzte ich aktuell als Testseite phase6.deIch greife auf die Website zu das ist kein Problem auch innerhalb dort kann ich alles steuern login ausführen auf buttons klicken etc. Doch das kann ich erst machen wenn die Cookies akzeptiert sind und mein Programm findet egal mit welchem Code die Cookies der Website nicht, wenn ich sie manuell anklicke geht der rest wieder ohne probleme, aber die Cookies machen mir zuschaffenKann mir da jemand helfen, was für Cookies das sind und wie ich darauf zugreife habe es schon mit dem xpath, cssSelector, name, id alles versucht import org.openqa.selenium.By;

Das ist mein aktueller Code(keine Cookie abfrage aktuell drin da ich testen wollte ob wenn ich manuell draufklicke dann buttons gefunden werden

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.*;

import java.util.Set;
import java.util.concurrent.TimeUnit;


public class EdgeLogin {
    public static void main(String[] args) {
        // Setze den Pfad zum Microsoft Edge WebDriver
        System.setProperty("webdriver.edge.driver", "C:\\Users\\A020451\\EigeneDateien\\EdgeLogin\\msedgedriver.exe");

        // Erzeuge eine neue Instanz des EdgeDriver
        WebDriver driver = new EdgeDriver();

        // Navigiere zur Phase6-Website
        driver.get("https://www.phase6.de");



        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }



        // Maximiere das Browserfenster
        driver.manage().window().maximize();

        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


        driver.findElement(By.cssSelector(".p6-icon-login")).click();


    }
}

Das ist der HTML-Code von dem Button auf der main html seite

<button id="acceptAllCookies" class="btn btn-primary" onclick="setGdprCookieAll();closeThisModal()" xpath="1">
::before
<span class="icon_check hide"></span>
::after
</button>

HTML, Java, Programmiersprache, Selenium
Wie mache ich daraus ein Strucktogramm?
import java.util.Scanner;
public class ChristmasTreeMain {
  Scanner scanner = new Scanner(System.in);
  int Tage;
  public static void main(String args[]) {
    ChristmasTreeMain tannenbaum = new ChristmasTreeMain();
    tannenbaum.inputTage();
    tannenbaum.drawTop(tannenbaum.Tage);
    tannenbaum.drawMiddle(tannenbaum.Tage);
    tannenbaum.drawBottom(tannenbaum.Tage);
  }
  public void inputTage() {
    boolean isInputValid = false;
    do {
      System.out.println("Bitte geben Sie einen Tage zwischen 1 und 24 ein:");
      while (!scanner.hasNextInt()) {
        System.out.println("Ungueltige Eingabe, geben Sie eine Zahl zwischen 1 und 24 ein.");
        scanner.next();
      }
      Tage = scanner.nextInt();
      if (Tage >= 1 && Tage <= 24) {
        isInputValid = true;
      } else {
        System.out.println("Ungueltige Eingabe, geben Sie eine Zahl zwischen 1 und 24 ein.");
      }
    } while (!isInputValid);
    scanner.close();
  }
  public void drawTop(int Tage) {
    for (int i = 2; i <= Tage; i++) {
      System.out.print(" ");
    }
    System.out.print("ii");
    System.out.println();
  }
  public void drawMiddle(int Tage) {
    int Dots = 0;
    for (int Tag = 1; Tag <= Tage; Tag++) {
       
      if (Tag > 2) {
        Dots += 2;
      }
   
      if (Tag > 1) {
   
        for (int i = 0; i < Tage - Tag; i++) {
          System.out.print(" ");
        }
   
        System.out.print("i/");
        for (int i = 0; i < Dots; i++) {
          System.out.print(".");
        }
        System.out.print("\\i");
   
        System.out.println();
      }
    }
  }
  public void drawBottom(int Tage) {
    for (int r = 1; r <= Tage; r++) {
      System.out.print("--");
    }
    System.out.println();
    for (int l = 2; l <= Tage; l++) {
      System.out.print(" ");
    }
    System.out.print("||");
  }
}
Java, Programmiersprache, Struktogramm
Selbst programmiertes MC Plugin Variable existiert nicht obwohl ich sie davor benutzt habe?

Das ist der Code der Main.java Datei:

package easytrade.thepixel3261.easytrade;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements CommandExecutor{


    @Override
    public void onEnable() {
        getLogger().info("Plugin enabled!");
    }

    @Override
    public void onDisable() {
        getLogger().info("Plugin disabled!");
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("convert")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage("Only players can use this command.");
                return true;
            }

            Player player = (Player) sender;

            if (args.length != 2) {
                player.sendMessage("Usage: /convert <material> <amount>");
                return true;
            }

            Material fromMaterial = Material.getMaterial(args[0].toUpperCase());
            int amount = Integer.parseInt(args[1]);

            if (fromMaterial == null) {
                player.sendMessage("Invalid material specified.");
                return true;
            }

            Material toMaterial = null;

            if (fromMaterial == Material.COPPER_INGOT && amount >= 2) {
                toMaterial = Material.EMERALD;
                amount /= 2;
            } else if (fromMaterial == Material.EMERALD && amount >= 1) {
                toMaterial = Material.COPPER_INGOT;
                amount *= 2;
            } else {
                player.sendMessage("Invalid material specified or not enough items.");
                return true;
            }

            ItemStack fromItem = new ItemStack(fromMaterial, amount);

            if (!player.getInventory().containsAtLeast(fromItem, amount)) {
                player.sendMessage("You do not have enough " + fromMaterial.toString().toLowerCase() + "s in your inventory.");
                return true;
            }

            if(toMaterial == Material.EMERALD) {
                ItemStack toItem = new ItemStack(toMaterial, amount/2);
            }
            if(toMaterial == Material.COPPER_INGOT) {
                ItemStack toItem = new ItemStack(toMaterial, amount*2);
            }

            // Remove the specified number of items from the player's inventory
            player.getInventory().removeItem(fromItem);

            // Add the converted items to the player's inventory
            player.getInventory().addItem(toItem);

            player.sendMessage("Successfully converted " + amount + " " + fromMaterial.toString().toLowerCase() + "s to " + amount + " " + toMaterial.toString().toLowerCase() + "s.");

            return true;
        }

        return false;
    }
}

Wenn ich versuch einen build zu machen passiert das:

Bild zum Beitrag
Java, Minecraft, Spigot
Selbstprogramiertes Plugin auf lokalen Server funktioniert nicht?

Ich habe ein Minecraft Plugin selbst programmiert aber jetzt wird diese Fehlermeldung angezeigt:

[08:53:05] [Server thread/ERROR]: Could not load 'plugins\EasyConvert+1.0.0.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Cannot find main class `easytrade.thepixel3261.easytrade.EasyTrade'
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:69) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:145) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:394) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:301) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.loadPlugins(CraftServer.java:435) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.dedicated.DedicatedServer.e(DedicatedServer.java:219) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:972) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:303) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ClassNotFoundException: easytrade.thepixel3261.easytrade.EasyTrade
    at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:147) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:99) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]
    at java.lang.Class.forName0(Native Method) ~[?:?]
    at java.lang.Class.forName(Class.java:534) ~[?:?]
    at java.lang.Class.forName(Class.java:513) ~[?:?]
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:67) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    ... 8 more

Als Server Software benutze ich Spigot. Das ist der Code der Main.java Datei:

package easytrade.thepixel3261.easytrade;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

    @Override
    public void onEnable() {
        getLogger().info("Plugin enabled!");
    }

    @Override
    public void onDisable() {
        getLogger().info("Plugin disabled!");
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("convert")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage("Only players can use this command.");
                return true;
            }

            Player player = (Player) sender;

            if (args.length != 2) {
                player.sendMessage("Usage: /convert <material> <amount>");
                return true;
            }

            Material fromMaterial = Material.getMaterial(args[0].toUpperCase());
            int amount = Integer.parseInt(args[1]);

            if (fromMaterial == null) {
                player.sendMessage("Invalid material specified.");
                return true;
            }

            Material toMaterial = null;

            if (fromMaterial == Material.COPPER_INGOT && amount >= 2) {
                toMaterial = Material.EMERALD;
                amount /= 2;
            } else if (fromMaterial == Material.EMERALD && amount >= 1) {
                toMaterial = Material.COPPER_INGOT;
                amount *= 2;
            } else {
                player.sendMessage("Invalid material specified or not enough items.");
                return true;
            }

            ItemStack fromItem = new ItemStack(fromMaterial, amount);

            if (!player.getInventory().containsAtLeast(fromItem, amount)) {
                player.sendMessage("You do not have enough " + fromMaterial.toString().toLowerCase() + "s in your inventory.");
                return true;
            }

            ItemStack toItem = new ItemStack(toMaterial, amount);

            // Remove the specified number of items from the player's inventory
            player.getInventory().removeItem(fromItem);

            // Add the converted items to the player's inventory
            player.getInventory().addItem(toItem);

            player.sendMessage("Successfully converted " + amount + " " + fromMaterial.toString().toLowerCase() + "s to " + amount + " " + toMaterial.toString().toLowerCase() + "s.");

            return true;
        }

        return false;
    }
}

Java, Minecraft, Bukkit, Spigot, PaperMC
Minecraft Plugin zu .jar umwandeln?

Ich habe ein Minecraft Plugin programmiert welches ich jetzt zu einer .jar Datei umwandeln will damit ich es auf meinen Server benutzen kann. Allerdings wenn ich javac in dem Verzeichnis mit der Main.java datei ausführe, werden mir viele Großbuchstaben und andere Sachen als Fehler angezeigt.

Das ist der Code der Main.java Datei:

package easytrade.thepixel3261.easytrade;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
  @Override
  public void onEnable() {
    getLogger().info("Plugin enabled!");
  }
  @Override
  public void onDisable() {
    getLogger().info("Plugin disabled!");
  }
  @Override
  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (cmd.getName().equalsIgnoreCase("convert")) {
      if (!(sender instanceof Player)) {
        sender.sendMessage("Only players can use this command.");
        return true;
      }
      Player player = (Player) sender;
      if (args.length != 2) {
        player.sendMessage("Usage: /convert <material> <amount>");
        return true;
      }
      Material fromMaterial = Material.getMaterial(args[0].toUpperCase());
      int amount = Integer.parseInt(args[1]);
      if (fromMaterial == null) {
        player.sendMessage("Invalid material specified.");
        return true;
      }
      Material toMaterial = null;
      if (fromMaterial == Material.COPPER_INGOT && amount >= 2) {
        toMaterial = Material.EMERALD;
        amount /= 2;
      } else if (fromMaterial == Material.EMERALD && amount >= 1) {
        toMaterial = Material.COPPER_INGOT;
        amount *= 2;
      } else {
        player.sendMessage("Invalid material specified or not enough items.");
        return true;
      }
      ItemStack fromItem = new ItemStack(fromMaterial, amount);
      if (!player.getInventory().containsAtLeast(fromItem, amount)) {
        player.sendMessage("You do not have enough " + fromMaterial.toString().toLowerCase()
            + "s in your inventory.");
        return true;
      }
      ItemStack toItem = new ItemStack(toMaterial, amount);
      // Remove the specified number of items from the player's inventory
      player.getInventory().removeItem(fromItem);
      // Add the converted items to the player's inventory
      player.getInventory().addItem(toItem);
      player.sendMessage("Successfully converted " + amount + " "
          + fromMaterial.toString().toLowerCase() + "s to " + amount + " "
          + toMaterial.toString().toLowerCase() + "s.");
      return true;
    }
    return false;
  }
}

Außerdem werden mir in IntelliJ 5 Warnungen angezeigt, weiß aber nicht wie man das fixen könnte:

Bild zum Beitrag
Java, Minecraft, Minecraft Plugin, PaperMC
Hilfe bei Economy System?

Hallo Leute. ich habe angefangen ein Economy System zu schreiben aber egal was ich mache wird die Config nicht ausgelesen. Ich finde den Fehler einfach nicht. Vielleicht könnte mir ja jemand der bisschen mehr Ahnung hat mir helfen was das Problem ist. Ich benutze die 1.20.2.

habe den Code mal eingefügt.

package gems;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

import org.bukkit.configuration.file.YamlConfiguration;

public class gems_config {
    
    public static Integer getGems(UUID id) {
        File file = new File("plugins//MysticEcon//" +id+ ".gems.yml" );
        YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file); 
        int usergems = cfg.getInt(id+ ".gems.yml");
        return usergems;
    }
    
    public static void addGems(UUID id, int amount ) {
        File file = new File("plugins//MysticEcon//" +id+ ".gems.yml" );
        YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
        int usergems = cfg.getInt(id+ ".gems.yml");
        usergems+=amount;
        cfg.set(id+ ".gems.yml", usergems);
        try {
            cfg.save(file);
        }catch(IOException ioex){
            
        }
        
    }
    
    
    public static void removeGems(UUID id, int amount ) {
        File file = new File("plugins//MysticEcon//" +id+ ".gems.yml" );
        YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
        int usergems = cfg.getInt(id+ ".gems.yml");
        usergems-=amount;
        cfg.set(id+ ".gems.yml", usergems);
        try {
            cfg.save(file);
        }catch(IOException ioex){
            
        }
        
    }
    
    public static boolean hasEnoughtGems(UUID id, int amount) {
        File file = new File("plugins//MysticEcon//" +id+ ".gems.yml" );
        YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
        int usergems = cfg.getInt(id+ ".gems.yml");
        if(usergems >= amount) {
            return true;
        }else {
            return false;
        }
    }
    
    public static void EconConfig(UUID id) {
        File ordner = new File("plugins//MysticEcon");
        File file = new File("plugins//MysticEcon//" +id+".gems.yml"); 
        YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
        
        if(!ordner.exists()) {
            ordner.mkdir();
        }
        if(!file.exists()) {
            try {
                file.createNewFile();
                cfg.set("Gems", 5000);
                cfg.save(file);
            }catch(IOException e) {
            }
        }
    }

}
Java, Programmiersprache
Findet ihr den Taschenrechner gut?

Hey ich habe gerade einfach spontan nach paar Videos Java lernen zum ersten mal mein eigenes Programm erstellen wollen und hab mal versucht einen Taschenrechner der + - / * ausführen kann zu machen, findet ihr den Code ok?

import java.util.Scanner;
public class Calc {
    public static void main (String[] args){
        Scanner scan = new Scanner(System.in);
        int zahl;
        int operation;
        int zahl2;
        int ergebnis = 0;
        int wiederholung = 1;

        while (wiederholung == 1) {

            System.out.println("Tippen sie eine Zahl ein");
            zahl = scan.nextInt();
            System.out.println("Welche Operation möchten sie durchführen? - (0) + (1) / (2) * (3)");
            operation = scan.nextInt();
            if (operation == 0) {
                System.out.println("Mit welcher Zahl möchten sie subtrahieren?");
            } else if (operation == 1) {
                System.out.println("Mit welcher Zahl möchten sie addieren?");
            } else if (operation == 2) {
                System.out.println("Mit welcher Zahl möchten sie dividieren?");
            } else if (operation == 3) {
                System.out.println("Mit welcher Zahl möchten sie multiplizieren?");
            }
            zahl2 = scan.nextInt();
            if (operation == 0) {
                ergebnis = zahl - zahl2;
            } else if (operation == 1) {
                ergebnis = zahl + zahl2;
            } else if (operation == 2) {
                ergebnis = zahl / zahl2;
            } else if (operation == 3) {
                ergebnis = zahl * zahl2;
            }
            System.out.println("Hier ist ihr Ergebnis: " + ergebnis + " ...möchten sie weitere Berechnungen durchführen? ja (1) nein (2)");
            wiederholung = scan.nextInt();
            if (wiederholung == 2) {
                System.out.println("Programm wird beendet");
                break;
            } else if (wiederholung == 1) {
                System.out.println("Super!");
            }
        }
Computer, Java, Programmiersprache
Java / Schiffe versenken: Wie kann ich dafür sorgen, dass die Schiffe nur horizontal und vertikal platziert werden können?

Ich habe diesen Schiffe-versenken-Code geschrieben. Jetzt weiß ich allerdings nicht, wie ich dafür sorgen kann, dass die Schiffe nur horizontal und vertikal plaziert werden können. Das soll durch if-Verzweigungen geregelt werden.

import javax.swing.JOptionPane;

public class Schiffeversenken {
  public static void main(String[] args) {
    // Spielfelderstellung
    int größefeld = Integer.parseInt(JOptionPane.showInputDialog("Wie groß soll das Spielfeld sein?"));
    String[][] spielerarray = new String[größefeld][größefeld];

    // Spielfeld leere Felder Befüllung
    for (int i = 0; i < spielerarray.length; i++) {
      for (int j = 0; j < spielerarray.length; j++) {
        spielerarray[i][j] = "o";
      }
    }

    // Anzahl Schiffe
    int anzahlschiffe = Integer.parseInt(JOptionPane.showInputDialog("Wie viele Schiffe hast du?"));

    for (int i = 0; i < anzahlschiffe; i++) {
      // Größe des Schiffes
      int größeschiff = Integer.parseInt(JOptionPane.showInputDialog("Wie groß ist dein " + (i + 1) + " Schiff?"));

      for (int j = 0; j < größeschiff; j++) {
        // Koordinateneingabe
        JOptionPane.showMessageDialog(null, "Wähle Koordinaten von 0-" + (spielerarray.length - 1));
        int koordinate1;
        int koordinate2;
        koordinate1 = Integer.parseInt(JOptionPane.showInputDialog("Was ist die 1 Koordinate des "+ (j + 1) + " Teil deines Schiffs?"));
        koordinate2 = Integer.parseInt(JOptionPane.showInputDialog("Was ist die 2 Koordinate des "+ (j + 1) + " Teil deines Schiffs?"));
        spielerarray[koordinate1][koordinate2] = "x";
      }
    }

    // Ausgabe Spielfeld
    for (int i = 0; i < spielerarray.length; i++) {
      for (int x = 0; x < spielerarray.length; x++) {
        System.out.print(spielerarray[x][i] + " ");
      }

      System.out.println();
    }
  }
}
Java, Array, Programmiersprache, Algorithmus
Java Input/Output Tests Junit?

Hallo, 

Ich habe folgendes Problem: Ich habe eine Klasse, die die Benutzerinteraktion (Input/Output) handhabt und ich muss Junit4 Tests dafür schreiben. 

Die Klasse, die ich testen möchte, sieht in etwa so aus:

package program;
// imports
public class UserInteraction {
    private Program program;


    private UserInteraction(){
        program = new Program();
    }


    // Menu display
    private void start() {
        while (!program.getProgramStarted) {
            String input = readInput();
            switch (input) {
            case "1":
                addUser();
                break;
            case "2":
                deleteUser();
                break;
            case "3":
                // ...
            default:
                System.err.println("Unknown option");
                break;
            }
        }
    }


    private void addUser() {
        // Output
        String username = readInput();
        program.addUser(username);
        System.out.println("User " + username + "added");
    }


    private void deleteUser() {
        // Output
        String username = readInput();
        program.deleteUser(username);
        System.out.println("User " + username + "deleted");
    }


    @SuppressWarnings("resource")
    private String readInput() {
        return (new Scanner(System.in)).nextLine();
    }


    public void main(String[] args) {
        UserInteraction ui = new UserInteraction();
        ui.start();
    }


}

Die Program Klasse so:

package program;
// imports
public class Program {
    // fields
    private User currentUser;
    private List<User> user = new ArrayList<User>();
    // constructor


    public void addUser(String name) throws Exception {
        if (user.size() >= 6) {
            throw new Exception();
        }
        int newID = user.size() + 1;
        user.add(new User(name, newID));
    }


    public String[] getALlUser() {
        int counter = 0;
        String[] userArray = new String[user.size()];


        for (User s : user) {
            userArray[counter++] = s.toString();
        }
        return userArray;
    }
}

Nun möchte ich zum Beispiel testen, ob die folgende Eingabe korrekt verarbeitet wird:

1
John
=> Benutzer John hinzugefügt

Zu diesem Zweck habe ich einen Junit-Test geschrieben, der wie folgt aussieht:

package tests;


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.PrintStream;


import org.junit.After;
import org.junit.Test;


import program.*;


public class UserInteractionTest {


    private final InputStream originalIn = System.in;
    private final PrintStream originalOut = System.out;
    private Program program;


    @After
    public void restoreStreams() {
        System.setIn(originalIn);
        System.setOut(originalOut);
    }


    @Test
    public void testCreateUser() throws Exception {
        String input = "1\nJohn\n";
        ByteArrayInputStream in = new ByteArrayInputStream(input.getBytes());
        System.setIn(in);
        ByteArrayOutputStream outContent = new ByteArrayOutputStream();
        System.setOut(new PrintStream(outContent)); // Leitet System.out um


        program = new Program();
        try {
            program.main(null);
        } finally {
            System.setIn(originalIn);
        }
        String expectedOutput = "User John added";
        assertTrue("Output not found", outContent.toString().contains(expectedOutput));
    }


}

Die Eingabe ("1\n") wird gemacht, aber danach wird keine Eingabe eingefügt, so dass der Test hängen bleibt.

Weiß jemand, wie man dieses Problem lösen kann? Oder gibt es vielleicht eine bessere Möglichkeit, die Eingabe/Ausgabe meines Java-Programms zu testen/zu überprüfen?

Vielen Dank im Voraus!

Java, Code, Eclipse, Programmiersprache

Meistgelesene Beiträge zum Thema Java