gpt4 book ai didi

java - 如何测试在 jUnit 控制台上打印的 void 方法?

转载 作者:行者123 更新时间:2023-11-29 03:09:13 31 4
gpt4 key购买 nike

我使用工厂模式。我有 3 种货币:美元、罗马尼亚列伊和欧元。在每个此类中,我都有相同的函数 print,但输出不同:

public void print() {
System.out.println("I printed dollars!");

}

public void print() {
System.out.println("I printed euro!");}

在我的工厂类中,我有一个返回货币类型的新对象的方法:

    public Valuta getValuta(String numeValuta){
if(numeValuta == null){
return null;
}
if(numeValuta.equalsIgnoreCase("dolar")){
return new Dolar();
}
if(numeValuta.equalsIgnoreCase("euro")){
return new Euro();
}
if(numeValuta.equalsIgnoreCase("lei")){
return new Lei();
}
return null;
}

现在,在我的测试课上,我尝试测试这个:

    FabricaBani fabrica = new FabricaBani();
Valuta valuta = fabrica.getValuta("dolar");
valuta.tipareste();
assertEquals("I printed dollars!", valuta.print());

我收到一条错误消息,提示我无法测试带有 void 的字符串。我尝试将 .toString 放在 valuta.print 之后,但我不允许这样做。

最佳答案

valuta 方法不返回任何内容,这就是为什么 valuta.print() 不能是您输出到控制台的字符串。

如果你想测试这个值,你可以重构你的方法来返回字符串而不是输出它;然后您将在调用 print() 的方法中打印返回的字符串。

public String print() {
return "I printed dollars!";
}

public void print() {
return "I printed euro!";
}

然后,你会像这样调用打印输出到控制台

System.out.println(valuta.print());

您可以将打印方法重命名为 getCurrency 以更好地表达该方法的作用。

关于java - 如何测试在 jUnit 控制台上打印的 void 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353308/

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