本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>
提问:如何使用String.format()打印空格?
我该如何使用String.format()重写:
for (int i = 0; i < numberOfSpaces; i++) {
System.out.print(" ");
}
回答1:
您需要指定字段的最小宽度
for (int i = 0; i < numberOfSpaces; i++) {
System.out.print(String.format("%" + numberOfSpaces + "s", ""));
}
但是为什么用输出指定长度的空格呢? 如果您想要具有值的此长度的列,则可以执行以下操作:
String.format("%" + numberOfSpaces + "s", "Hello");
它为您提供numberOfSpaces-5个空格,后跟Hello。 如果你希望hello在左侧
public static void main(String[] args) {
int numberOfSpaces = 10;
System.out.println(String.format("%-" + numberOfSpaces + "s", "Hello"));
}
提问:修改返回值为void函数的输入参数,然后读取这个输入
我有一个相当复杂的Java函数,我想使用jUnit进行测试,并且为此使用了Mockito。 该函数如下所示:
public void myFunction (Object parameter){
...
doStuff();
...
convert(input,output);
...
parameter.setInformationFrom(output);
}
函数convert根据输入设置输出的属性,它是一个返回类型为void类型的函数。 我要模拟的这个convert函数,我不需要依赖于测试的输入,但是我不知道该怎么做,因为我对Mockito不太熟悉。
我已经看到基本情况是when(something).thenReturn(somethingElse)或doAnswer方法,但是我认为这些情况不适合我的情况 ,因为我的函数没有return语句。
回答1:
如果要让模拟方法在参数上调用方法(或以其他方式更改)
doAnswer(new Answer() {
Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
((MyClass)args[0]).myClassSetMyField(NEW_VALUE);
return null; // void method, so return null
}
}).when(mock).someMethod();