【问题标题】:Order of function execution in mxunit testcasemxunit 测试用例中的函数执行顺序
【发布时间】:2014-07-10 15:25:24
【问题描述】:

我使用 MxUnit 作为我的 ColdFusion 项目的测试框架。但我不确定,测试用例中的函数是以什么顺序执行的。我在 DB 中插入了虚拟记录以进行测试,在 beforeTests() 中,并在 afterTests() 中删除了这些记录。我的测试用例中有以下功能

public void function Read() {
//Block of code
}
public void function Save() {
//Block of code
}
public void function Delete() {
//Block of code
}

但一开始Delete() 被执行,所以read() 返回“No record Found”(失败消息),因为记录在delete() 本身中被删除。所以我认为它是按字母顺序运行的,所以我相应地更改了函数名称(Read(),Save(),XDelete() - 因为它是按字母顺序)。同样的事情又发生了。

但是当我将函数重命名为 A_Read(),B_save(),C_Delete() 时,它工作正常。

所以有人解释了函数的执行顺序。

【问题讨论】:

  • 除了 Simon 和 Duncan 所说的之外,您可能还应该模拟出您的代码中影响到 DB 的部分。单元测试一开始就不需要访问数据库。
  • 另外:MXUnit 有点死了。您可以切换到 TestBox 吗?这是一种更好的体验,并且仍然(非常)积极地开发。如果您只是从单元测试开始;我建议不要从 MXUnit 开始。
  • 好的@AdamCameron 感谢您提供宝贵的信息,将考虑有关testbox。
  • (哦,你所有的 MXUnit 测试也将在 TestBox 上运行!)
  • @AdamCameron 哇!听起来不错..

标签: coldfusion mxunit


【解决方案1】:

你不能保证它们会以什么顺序运行,假设它是随机的。

http://blog.adamcameron.me/2013/11/unit-testing-mxunit-and-test-scenario.html

对于给定的测试运行,无法保证测试运行的顺序 在,虽然实际上这取决于 ColdFusion 如何将它们暴露在 我认为是 CFC 的元数据。他们的执行顺序肯定不是 随机化的。但是不应该假设任何测试执行顺序。和, 事实上,每个测试确实需要与其他测试完全分离 在 CFC 中进行测试

您确实需要重新考虑如何进行测试,因此它们都是相互独立的。

但如果你真的必须这样做:http://blog.bittersweetryan.com/2012/01/using-new-orderedtestdecorator-in.html

【讨论】:

    【解决方案2】:

    您最好使用 setUp 和 tearDown 而不是 beforeTests 和 afterTests。这样,新的虚拟记录将在每个测试运行之前插入到数据库中,并且测试不会相互依赖。

    【讨论】:

    • 是的!你是对的,但希望它可能会导致执行时间的一些延迟,对于每个测试,它都会插入和删除虚拟记录。
    • 另一种方法是创建几个私有辅助方法,一个用于创建虚拟记录,另一个用于删除它们,并在需要时从测试用例中调用辅助方法。
    猜你喜欢
    • 2013-07-08
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多