我有一个计算器,可以输入并打印结果。例如:输入到扫描仪:2+3+4=打印:9.00
我想在junit中测试这个主要方法。这是我到目前为止的成绩(接线员是班级):
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.PrintStream;
import org.junit.Before;
import org.junit.jupiter.api.Test;
class MainTester {
private final ByteArrayOutputStream resultByte = new ByteArrayOutputStream();
private final PrintStream result = System.out;
@Before
public void setUp() {
System.setOut(new PrintStream(resultByte));
}
@Test
void test() {
Operator operator = new Operator();
String input = "2+3+4=";
InputStream in = new ByteArrayInputStream(input.getBytes());
System.setIn(in);
String[] args = null;
System.out.println(operator.main(args));
assertEquals("9.00", resultByte.toString());
}
}
1条答案
按热度按时间nkhmeac61#
如果你把责任分开,测试就容易多了。e、 g.计算结果的部分不应与读取输入和打印输出的部分相同。如果
Operator
我有办法compute
,它接受带有输入的字符串(“2+3+4”),并返回带有结果的字符串(“9.00”)。然后可以测试此方法是否返回预期结果。你的main
方法将读取输入并将其传递给compute
并打印结果。大致如下: