单元测试用法
回答
你可以检查你喜欢的任何东西。对于函数式语言来说,函数的返回值是唯一的指示器,你可能需要检查全局状态(使用高级语言)或对象状态(使用面向对象的语言),以确定测试已通过。
作为一个非常简单的(而且通常没有必要)例如:
void testSetTextSetsText()
{
Foo foo();
foo.setText("bar");
assertEqual("bar", foo.text());
}
你不能真正测试以另一种方式void
方法,其实。 技术上你在这里再次检查方法的返回值(text()
),但大多数时候你想编写测试来验证外部观察者可见的状态,所以这已经足够了。
完美,谢谢! – willsam 2013-05-03 06:37:36
为什么“经常不需要”?是的,设置一个成员是微不足道的,但是在设计良好的代码中,大多数事情都是基于其他琐事构建的。但那意味着你只需要测试一些不重要的东西。大部分bug都隐藏在一些不正确的琐事中(比如你的memleak和'.'而不是' - >'access)。所以这个测试*是必要的。也许不会检查'setText'是否确实做了正确的事情,但要确保它不会被意外更改。 – 2013-05-03 06:43:49
我不再测试微不足道的getter和setter,代码覆盖率被诅咒。这是不支持更好构造的语言的样板代码(例如,与C#相比,Java和C++)。当设置者*确实*做了其他事情而不仅仅是设置该值时*我肯定*想要测试它(当合同说“设置模型时也会创建新的选择模型”)。但只是为了将一个论点传播到一个领域?我真的不再需要这种需要了。 – Joey 2013-05-03 06:47:16
您(可以)不仅检查值,还检查行为。例如,使用Mock-object抛出预期异常或致电外部服务。
void testMethodThrows()
{
Foo f;
AssertThrows([&](){f.bar();});
}
void testSendsEmail
{
Foo f;
EmailServiceMock email;
f.bar(email);
Assert(email.EmailWasSent());
}
啊,的确,我忘了那些。带回需要在JUnit 3中测试异常的不好记忆;-) – Joey 2013-05-03 06:50:24
- 1. 单元测试Java方法
- 2. 单元测试UI方法
- 3. python单元测试方法
- 4. CakePHP测试 - 单元测试
- 5. 单元测试测试
- 6. 调用FileWriter的单元测试方法
- 7. 单元测试实用程序方法
- 8. 无法使用单元测试
- 9. 单元测试专用方法
- 10. 单元测试无法正常工作 - Ruby使用测试单元
- 11. 你用单元测试测试什么?
- 12. 单元测试()
- 13. 单元测试
- 14. 单元测试
- 15. 单元测试
- 16. 单元测试
- 17. 单元测试
- 18. 单元测试
- 19. 单元测试
- 20. 单元测试
- 21. 单元测试
- 22. 单元测试
- 23. 单元测试
- 24. 单元测试
- 25. 单元测试
- 26. Laravel 5.3使用php单元测试构建单元测试
- 27. Android:单元测试:如何使用SensorManager创建单元测试?
- 28. 单元测试使用茉莉花单元测试框架node.js
- 29. 无法单元测试原型方法
- 30. MVC单元测试用例
你检查什么你可以 – 2013-05-03 06:33:57