【发布时间】:2018-03-24 06:29:54
【问题描述】:
我课上写的方法
public static Advertisement[] createAd() throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
Advertisement[] ad = new Advertisement[5];
int count =0;
char ch;
do
{
System.out.println("Enter advertisement id:");
int id=Integer.parseInt(br.readLine());
System.out.println("Enter advertisement type:");
String type=br.readLine();
ad[count]= new Advertisement(id, type);
count++;
System.out.println("Do you want publish another advertisement(Y/N):");
ch = br.readLine().charAt(0);
if((ch!='y')&&(ch!='Y'))
{
break;
}
}while(count<=5);
if(count==5)
{
System.out.println("Maximum ads reached");
return ad;
}
return ad;
}
Juint @Test method
@Test
public void testCreateAd() throws IOException
{
Advertisement[] a = Advertisement.createAd();
assertTrue("Maximum five ads only should be created",(a.length<=5));
}
我想检查一下,createAd 方法应该返回最多 5 个广告类型的对象。但是当@Test 方法运行时它要求输入,我们可以通过一些地方将输入传递给那些 readLine 方法
【问题讨论】:
-
要看的东西:stackoverflow.com/a/6416591/1531124。问题是:您可以使用一些技巧测试从 System.in 读取的代码。但是:你不应该这样做。您完全隐藏您的代码通常从您的生产代码中从标准输入读取的事实。以便它适用于任何类型的输入。