mockito 如何将值传递给没有参数的方法?

x9ybnkn6  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(263)

我有个办法

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());
}

然而这实际上让我通过了scanner的争论,显然我在测试中做不到。其他的逻辑也被尝试过。我也尝试过使用when()thenReturn()thenAnswer(),但是我找不到解决这个问题的方法,因为我对嘲笑还很陌生。
有人能和我分享一些想法吗?

nbnkbykc

nbnkbykc1#

以下是您可以执行的操作:

String data = "TestName\nTestPW\n";
InputStream testInput = new ByteArrayInputStream(data.getBytes() );
InputStream old = System.in;
System.setIn(testInput);
user = authenticateUser();
System.setIn(old);

相关问题