展开全部
那表示你应该把“返回参数的方法A“和”A后面验证方法A返回值的方法B“的执行过程封闭成一个 test 方法。
一个 test case 是指”验证某个case是否正常“。复杂的多种情况应该分割成几个独立的 case 来测试。确保每个 case 都是原子性的 (Atomic)。如果你打算让一个 Case 中还讲究 if-else 来分别处理几种业务情况就表示你没理解单元测试的意思,你那样测试的不是”单元“而是”过程“。
而每个 JUnit test 方法应该是无状态的,无状态就是说,我们以任何次序和次数去调用某个方法,它给出的结果在参数相同的情况下结果应该完全相同,如果我们在测试过程中记住了某个”状态“变量再去按不同的次序调用几个方法时这几个方法可能分别影响了那个”状态“变量的值,这就导致调用的次序和次数的不同组合得到的结果不相同。比如 testA(), testB(), test(),我们以任何次序和次数的组合去调用这几个方法,对每个方法来说在参数相同时结果就应该相同,如果它们之间共享了”状态“就是错误的 Test Case 设计,因为我们这样是在测试”过程“而不是过程中的某个”单元“。这样一来对于以后经常改动代码的情况下我们只需要改完后再重新跑所有的 JUnit Test Case 来验证这次改动没有影响其它的功能。如果做不到这点就不是一个合格的 JUnit Test Case。
一个 test case 是指”验证某个case是否正常“。复杂的多种情况应该分割成几个独立的 case 来测试。确保每个 case 都是原子性的 (Atomic)。如果你打算让一个 Case 中还讲究 if-else 来分别处理几种业务情况就表示你没理解单元测试的意思,你那样测试的不是”单元“而是”过程“。
而每个 JUnit test 方法应该是无状态的,无状态就是说,我们以任何次序和次数去调用某个方法,它给出的结果在参数相同的情况下结果应该完全相同,如果我们在测试过程中记住了某个”状态“变量再去按不同的次序调用几个方法时这几个方法可能分别影响了那个”状态“变量的值,这就导致调用的次序和次数的不同组合得到的结果不相同。比如 testA(), testB(), test(),我们以任何次序和次数的组合去调用这几个方法,对每个方法来说在参数相同时结果就应该相同,如果它们之间共享了”状态“就是错误的 Test Case 设计,因为我们这样是在测试”过程“而不是过程中的某个”单元“。这样一来对于以后经常改动代码的情况下我们只需要改完后再重新跑所有的 JUnit Test Case 来验证这次改动没有影响其它的功能。如果做不到这点就不是一个合格的 JUnit Test Case。
更多追问追答
追问
怎样把“返回参数的方法A“和”A后面验证方法A返回值的方法B“的执行过程封闭成一个 test 方法?
追答
比如我们应该有一个 testA() {
Object p = worker.calculateA(p1,p2,p3);
assert ...;
}
testB() {
Object p = worker.verifyB(p1);
assert ...;
}
testAB() {
Object p = worker.calculateA(p1,p2,p3);
Object ppp = worker.verifyB(p);
assert ....
}}
上面两个步骤,第个 testA, testB 方法专门用来测试 A 和 B 本身工作正常。如果你希望像 testAB() 那样来测试也不能跳过 testA 和 testB 这两个方法,它们是必须的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询