我遇到Junit测试问题,可以在网上找到很少的信息。
首先,我想测试2种方法,
1。setTable(int r, int c, String s)
2。getTableString()
。
我设法测试了第一个,但是第二个要求已经构建了表(表是带有getter的private static char[][]
,并且是由第一个方法构建的。)
如何测试第二种方法?我想过这样做:
public void testGetTableString() {
MyClass test = new MyClass();
test.setTable(5, 4, "string");
String toTest = test.getTableString();
assertEquals("expected result", toTest);
}
然而,这似乎并不正确,因为它依赖于setTable
工作。
我还想过在setUp()方法中初始化test.setTable(5,4,"string")
,但这意味着我必须在setTable
方法中更改每个setUp()
的参数时间而不能跟踪我的测试;加上我的第一种方法setUp()
,我也不想要。
非常感谢任何帮助。
答案 0 :(得分:2)
RE:然而这似乎不对,因为它依赖于setTable工作。
你所做的是完全合适的。如果getTableString()是被测方法,那么隔离它的最佳方法是设置必要的前置条件。此外,通过将setTable调用置于此测试方法中,您已将这些条件隔离到此一个测试(而不是将调用置于setup()中,这将被所有测试方法看到)。
答案 1 :(得分:1)
仅仅因为你有两种方法(测试)并不意味着必须有两种方法来测试它们。你可以在一次junit测试中加入。
由于它们是相关的,因此除非您使用setXY
getXY
有效