我正在尝试为我尚未实现的Queue类提供一个测试用例。在尝试编写testEnqueue方法的代码时,除了使用size()或dequeue()之外,我找不到验证方法。
使用其他公共方法(例如:size / dequeue)来验证同一类的公共方法(入队)的测试用例是否可以?
答案 0 :(得分:3)
是的,它无疑是一种适当的验证方式。
答案 1 :(得分:2)
是的,通过对象的外部接口进行测试是理想的(与黑客入侵其内部进行验证)。只要测试了每个行为,就不应该有任何问题。如果Enqueue依赖于Size()并且已经证明Size已经按预期工作,那么你可以像你提到的那样安全地编写测试。
对于这个例子,我可能首先实现Size()[0元素,用1,n个元素创建的队列]。然后移动到Enqueue()并验证Size是否增加1。
你走在正确的轨道上。
答案 2 :(得分:1)
据我了解,您在此处看到了经典的鸡肉和鸡蛋问题 - 如何使用a()
测试b()
并验证其行为,然后使用b()
测试a()
。从理论角度看,如果它们都不正确,那么测试可能仍会通过......这就像使用JUnit测试JUnit一样。
但是,如果您将代码视为黑盒(在执行TDD时就是这种情况)并且您只是编写测试来为您的类/单元提供一些输入并验证输出,那么这种方法没有任何问题。只记得测试所有典型的案例和角落案件/边境条件 - 如果它们符合您的业务预期,可能会出现什么问题?