我在使用以下代碼時遇到問題,我有點困惑public class EchoApp { public static void main(String[] args) { for (String string : args) { System.out.println(string); } }}以下測試失?。篿mport static org.hamcrest.CoreMatchers.equalTo;import static org.mockito.Mockito.*;import java.io.PrintStream;import org.junit.Test;public class AppTest { @Test public void test() { Input input = new Input("Hello!", "World!"); Output output = new Output("Hello!", "World!"); PrintStream out = mock(PrintStream.class); System.setOut(out); EchoApp.main(input.wrap()); output.value.forEach(i -> { verify(out).println(equalTo(i)); }); }}import java.util.Arrays;import java.util.List;class Input extends Immutable<List<String>> { Input(final List<String> values) { super(values); } Input(String... values) { super(Arrays.asList(values)); } String[] wrap() { return value.toArray(new String[value.size()]); } @Override public String toString() { return "Input [value=" + value + "]"; }}import java.util.Arrays;import java.util.List;class Output extends Immutable<List<String>> { Output(List<String> values) { super(values); } Output(String... values) { super(Arrays.asList(values)); } @Override public String toString() { return "Output [value=" + value + "]"; }}class Immutable<T> { final T value; Immutable(T value) { this.value = value; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((value == null) ? 0 : value.hashCode()); return result; }參數不同!通緝:printStream.println("你好!"); -> 在 AppTest.lambda$0(AppTest.java:24) 實際調用有不同的參數: printStream.println("Hello!"); -> 在 EchoApp.main(EchoApp.java:7)
1 回答

人到中年有點甜
TA貢獻1895條經驗 獲得超7個贊
我認為如果您使用 Mockito Matcher(不是 hamcrest 匹配器),它會起作用:org.mockito.Matchers#eq(T)。當涉及到這些匹配器時,自動完成功能很差,因為它們只返回一個值。org.mockito.Matchers 用于驗證參數(參見 JavaDoc)。
添加回答
舉報
0/150
提交
取消