用junit测试某个方法时,能否调用同一个类中未经测试的另一个方法
比如说我要测试一个自己写的Stack类MyStack,包含了push()pop()peek()这三个方法情况一:在测试MyStack.push()时:MyStack.pu...
比如说我要测试一个自己写的Stack类MyStack,包含了push() pop() peek()这三个方法
情况一:
在测试MyStack.push()时:
MyStack.push(1);
assertEquals(1, MyStack.peek());
peek()会在同一个test类里进行测试,只是测试push()的时候它还没有被测试到,这样可以吗?
情况二:
在测试MyStack.peek()时:
MyStack.push(1);
assertEquals(1, MyStack.peek());
这时push()还没有被测试到,会在之后被测试,光调用它而不是作为测试判断依据,这样可以吗?
如果以上都不可以的话,我要如何测试这两个方法?MyStack类里的数组成员是私有的,不能直接使用。 展开
情况一:
在测试MyStack.push()时:
MyStack.push(1);
assertEquals(1, MyStack.peek());
peek()会在同一个test类里进行测试,只是测试push()的时候它还没有被测试到,这样可以吗?
情况二:
在测试MyStack.peek()时:
MyStack.push(1);
assertEquals(1, MyStack.peek());
这时push()还没有被测试到,会在之后被测试,光调用它而不是作为测试判断依据,这样可以吗?
如果以上都不可以的话,我要如何测试这两个方法?MyStack类里的数组成员是私有的,不能直接使用。 展开
1个回答
展开全部
push() pop() peek()是静态方法,或者new一个MyStack的静态实例,就可以这样做,而且可以根据testcase的上下顺序将上一次执行的结果做为下一个用例的输入,但是这样做就破坏了每个用例的数据独立性,不利于长期维护同时也很容易出现测试代码上的错误,不建议这样用。push() pop() peek()三个方法一般会协同使用,所以用例设计时应该将每个场景独立设计,在每个testcase前对MyStack进行初始化,针对Stack中所存储数据边界值、等价类、Stack中方法单独调用,反复调用,交叉调用等情况分别设计用例覆盖。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询