我正在编写一个 gem 来包装 xmpp4r RubyGem。我想为我所能做的一切添加测试,但我是测试新手,有点卡在这里。
本质上,我希望我的一个类具有“连接”功能,但我不知道如何测试这样的东西......我可以在网上找到的所有关于测试的例子都过于简单化了。它是“绿色西兰花”等,你明白了。
如何测试看似更复杂的东西?链接到关于这些东西的好的文档会很好,以及根据您自己的经验提供更个性化的答案。
编辑:如果没有遇到任何异常,可能会让测试通过?这样做我会走上正确的道路吗?
我正在编写一个 gem 来包装 xmpp4r RubyGem。我想为我所能做的一切添加测试,但我是测试新手,有点卡在这里。
本质上,我希望我的一个类具有“连接”功能,但我不知道如何测试这样的东西......我可以在网上找到的所有关于测试的例子都过于简单化了。它是“绿色西兰花”等,你明白了。
如何测试看似更复杂的东西?链接到关于这些东西的好的文档会很好,以及根据您自己的经验提供更个性化的答案。
编辑:如果没有遇到任何异常,可能会让测试通过?这样做我会走上正确的道路吗?
首先,检查 gem 本身是否经过测试。如果是并且测试通过了,您可能应该相信 gem 的代码。然后,您可以模拟对 gem 的任何调用,并在测试成功或失败场景时返回适当的调用。
IE
xmpp4r.should_receive(:connect).and_return(mock("xmpp4r"))
如果 gem 没有经过测试,则与您自己没有进行任何测试差不多。您应该考虑使用另一个 gem 或自己测试它(甚至使用 TDD 创建一个)。
记住你是一个程序员,你是你自己代码世界的主宰。
就像您构建易于他人使用的应用程序一样,您可以帮助自己并使您的代码易于测试。进行 OO 编程的主要好处之一是将行为封装到方法中,然后使用这些方法作为关键测试点更容易测试您的代码。如果您的代码难以测试,那是因为您没有将自己或测试人员视为您的应用程序/代码的另一个用户。
测试与任何框架或技术没有直接关系。试着把它看作是与代码本身分离的东西,比这更大的东西。如果您不知道如何测试某些东西,是因为您很可能不知道为什么需要它以及如何使用它。
尝试做一些 TDD(测试驱动开发),你就会明白我的意思。
还要记住有不同类型的测试:功能测试/高级单元测试/低级 UAT/用户验收测试性能测试探索性测试/手动测试集成测试(您可以构建一些您的代码将使用的部分的模型在集成之前预测任何问题)
测试是昂贵的,所以测试一切不是问题,而是测试需要测试的内容。
甚至美国宇航局也不测试“一切”
测试……就像编程一样深。潜水不错!