java - 如何使用 JUnit 测试 Java 中的任何输出

标签 java unit-testing junit

我想测试下面的两种方法,但因为它基于随机输出,所以我的首选 assertEquals() 不起作用。

我只是想测试以确保这些方法正在产生某种输出。有任何想法吗?

新手程序员,感谢帮助。

    public void compRandomChoice() {
    double choice = (Math.random() * 100 / 100);

    if (choice > 0 && choice <= 0.34) {
        computer.setChoice(HandThrow.ROCK);
    } else if (choice > 0.34 && choice <= 0.67) {
        computer.setChoice(HandThrow.PAPER);
    } else {
        computer.setChoice(HandThrow.SCISSORS);
    }
}


    public String gameWinner() {
    String gameResult;

    if (human.getChoice() == computer.getChoice()) {
        gameResult = "ITS A TIE!";
    } else if (human.getChoice() == HandThrow.ROCK
            && computer.getChoice() == HandThrow.SCISSORS
            || human.getChoice() == HandThrow.PAPER
            && computer.getChoice() == HandThrow.ROCK
            || human.getChoice() == HandThrow.SCISSORS
            && computer.getChoice() == HandThrow.PAPER) {
        gameResult = "CONGRATS, YOU WIN!";
    } else {
        gameResult = "COMPUTER WINS!";
    }
    return gameResult;

}

最佳答案

我建议更改 compRandomChoice() 函数如下

public void compRandomChoice(double rand_no) {
    double choice = (rand_no * 100 / 100);

    if (choice > 0 && choice <= 0.34) {
        computer.setChoice(HandThrow.ROCK);
    } else if (choice > 0.34 && choice <= 0.67) {
        computer.setChoice(HandThrow.PAPER);
    } else {
        computer.setChoice(HandThrow.SCISSORS);
    }
}

然后在您的程序中,您可以将其称为 compRandomChoice(Math.random()) 现在在您的单元测试中, 您可以对输入进行硬编码,例如compRandomChoice(0.5) 并断言结果符合预期。

同样,将public String gameWinner()更改为public String gameWinner(String human_choice, String Computer_choice)

 public String gameWinner(String human_choice, String computer_choice) {
    String gameResult;

    if (human_choice == computer_choice) {
        gameResult = "ITS A TIE!";
    .......

在您的代码中,您可以将该函数调用为 gameWinner( human.getChoice(),computer.getChoice())。在单元测试中,您可以对输入进行硬编码(使用与之前函数类似的方法),并断言您根据传递的参数获得了预期结果。

关于java - 如何使用 JUnit 测试 Java 中的任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514204/

相关文章:

unit-testing - 单元测试名称重要吗?

java - powermockito 中的 ArraysIndexOutOfBounds 异常

java - Netbeans 11.3 IDE 中的 Junit 测试失败 "Could not find or load main class"

java - cucumber .runtime.CucumberException : java. lang.NoSuchMethodException

java - Spring Cloud Contract LocalDateTime 断言失败

java - 身份验证失败 Sql Server JDBC Java 8

java - 计算机上有多少个 java 虚拟机 extst

java - 如何用我自己的 readObject 调用替换 Java 的默认反序列化?

javascript - Jasmine 和 Angular : Injecting a service into a service mock

java - 加载静态属性文件类