如何将值传递给没有参数的方法?
How can I pass value to a method which doesnt have parameters?
我有办法
public User authenticateUser(){
Scanner scr = new Scannery(System.in);
String name = scr.nextLine();
String password = scr.nextLine();
return new User(name,passworrd);
}
我想知道我是否可以对其进行单元测试,如果它真的创建了用户。但是它没有参数。
我尝试了以下方法:
@Test
public void testIfReadCredentialsReturnUser(){
User user = mock(User.class);
ConsoleView view = new ConsoleView();
view.readCredentials().setEmail("asd.com");
view.readCredentials().setPassword("asd");
assertNotNull(view.readCredentials());
}
然而,这实际上让我通过了与扫描仪的争论,这是我在测试下显然做不到的。
还尝试了其他逻辑。我也尝试过使用 when()
、thenReturn()
、thenAnswer()
,但我找不到解决这个问题的方法,因为我对模拟还很陌生。
有人可以和我分享一些想法吗?
您可以执行以下操作:
String data = "TestName\nTestPW\n";
InputStream testInput = new ByteArrayInputStream(data.getBytes() );
InputStream old = System.in;
System.setIn(testInput);
user = authenticateUser();
System.setIn(old);
我有办法
public User authenticateUser(){
Scanner scr = new Scannery(System.in);
String name = scr.nextLine();
String password = scr.nextLine();
return new User(name,passworrd);
}
我想知道我是否可以对其进行单元测试,如果它真的创建了用户。但是它没有参数。
我尝试了以下方法:
@Test
public void testIfReadCredentialsReturnUser(){
User user = mock(User.class);
ConsoleView view = new ConsoleView();
view.readCredentials().setEmail("asd.com");
view.readCredentials().setPassword("asd");
assertNotNull(view.readCredentials());
}
然而,这实际上让我通过了与扫描仪的争论,这是我在测试下显然做不到的。
还尝试了其他逻辑。我也尝试过使用 when()
、thenReturn()
、thenAnswer()
,但我找不到解决这个问题的方法,因为我对模拟还很陌生。
有人可以和我分享一些想法吗?
您可以执行以下操作:
String data = "TestName\nTestPW\n";
InputStream testInput = new ByteArrayInputStream(data.getBytes() );
InputStream old = System.in;
System.setIn(testInput);
user = authenticateUser();
System.setIn(old);