我有一個方法
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(),但我找不到解決這個問題的方法,因為我對模擬還很陌生。
有人可以和我分享一些想法嗎?
uj5u.com熱心網友回復:
這是您可以執行的操作:
String data = "TestName\nTestPW\n";
InputStream testInput = new ByteArrayInputStream(data.getBytes() );
InputStream old = System.in;
System.setIn(testInput);
user = authenticateUser();
System.setIn(old);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478948.html
