gpt4 book ai didi

java - JUnit 测试控制台多个用户输入 && 通过本应失败的测试

转载 作者:行者123 更新时间:2023-12-01 11:44:02 27 4
gpt4 key购买 nike

问题 1:我有一个提示输入的程序,其中一个选项是选择选项“t”,意思是从文本文件中获取信息。然后,系统还会提示用户输入文本文件的名称。

问题2:测试E()测试F()

都意味着无法显示验证输入。我怎样才能将它们显示为已通过?

这是到目前为止我的测试的样子,其中大部分都是单输入

import java.io.ByteArrayInputStream;

import package.App;

import org.junit.Test;

public class AppTest {

@Test
public void testA(){
testApp("1");
}
@Test
public void testB(){
testApp("2");
}
@Test
public void testC(){
testApp("3");
}
@Test
public void testD(){
testApp("a");
}
@Test
public void testE(){
testApp("hello");
}
@Test
public void testF(){
testApp("");
}
@Test
public void testG(){
testApp("t");
}

public void testApp(String a){
System.out.println();
ByteArrayInputStream in = new ByteArrayInputStream(a.getBytes());
System.setIn(in);
App.main(null);
System.out.println();
}
}

这是主类:

import java.util.Scanner;

public class App {

public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("Enter '1' , '2' or '3' for individual calulations based on formatted input from the given problem" + "\n" +
"Enter 't' for input from a text file");
System.out.print("Please select the mode from which to run:");

String input = "";
input = scan.nextLine();

while(input.length()!= 1){
System.out.println();
System.out.println("Invalid input, valid entries. Please try again.");
System.out.println("Enter '1' , '2' or '3' for individual calulations based on formatted input from the given problem" + "\n" +
"Enter 't' for input from a text file");
System.out.print("Please select the mode from which to run:");
input = scan.nextLine();
}
System.out.println();
char c = input.charAt(0);
new ProductList(c);
scan.close();
}
}

最佳答案

不能那样做。

停下来思考一下您要测试的内容。当然不是 Java 控制台输入的功能,而是计算的结果,对吗?

重构代码,将数据输入与计算分开。摆脱静态方法中的逻辑,尤其是主方法。使用面向对象来创建适当的组件,也许是一个计算器和一个数据提供程序? 静态 main 只会将事物连接在一起,没有其他逻辑。

针对计算器编写测试,但这次从测试中将其连接在一起,以及您可以为测试提供测试值的不同 DataProvider(但这与 cosole 无关) )。

现在就编写大量很酷的单元测试:)

关于java - JUnit 测试控制台多个用户输入 && 通过本应失败的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29308225/

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