gpt4 book ai didi

java - 如何对 Java 中的任何输出进行 JUnit 测试

转载 作者:行者123 更新时间:2023-11-30 06:24:48 24 4
gpt4 key购买 nike

我想测试下面的两种方法,但因为它基于随机输出,所以我的首选 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 - 如何对 Java 中的任何输出进行 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com