代码之家  ›  专栏  ›  技术社区  ›  Igor Zevaka

将c单元测试名称转换为英语(testdox样式)

  •  3
  • Igor Zevaka  · 技术社区  · 15 年前

    我有很多单元测试都是用mbunit编写的,我想用测试名生成简单的英语句子。概念介绍如下:

    http://dannorth.net/introducing-bdd

    本文摘自:

    public class CustomerLookupTest extends TestCase {
        testFindsCustomerById() {
            ...
        }
        testFailsForDuplicateCustomers() {
            ...
        }
        ...
    }
    

    呈现如下内容:

    CustomerLookup
    - finds customer by id
    - fails for duplicate customers
    - ...
    

    不幸的是,上面提到的工具(TestDox)是基于Java的。有.net的吗?

    听起来写起来很简单,但我没有带宽,想用已经写过的东西。

    编辑: 只是为了澄清这个问题。我正在寻找一些东西,可以通过现有的测试,并将camelcase函数名转换成句子。对于某种Gallio插件来说似乎是个完美的工作。

    到目前为止我发现 SpecUnit 杰伊已经建议了bdddoc。这两个框架都是行为验证框架,需要对现有测试进行重大重写。我们的团队已经决定将specflow作为一个主要的bdd框架,我试图实现的是生成一个现有测试的报告,看看它是否适合bdd方法。

    5 回复  |  直到 10 年前
        1
  •  3
  •   Martin Moene    14 年前

    有一个 TestDox for .NET 这似乎是最近(2010年)。

        2
  •  2
  •   Gaspar Nagy    14 年前

    在去年的一个演示中,我创建了一个小型的bdd单元测试助手,它用普通英语显示正在执行的方法名。它的弦魔法部分很薄,所以你一定可以从中提取出来。

    这是我的帖子和下载链接: http://gasparnagy.blogspot.com/2009/10/devcamp09-behavior-driven-development.html

        3
  •  1
  •   Jay    15 年前

    看一看 developwithpassion.bdd bdddoc ,由JP Boodhoo开发。

    他在博客上的原始文章如下: http://blog.jpboodhoo.com/BDDDoc.aspx

    您可以在github上找到代码: http://github.com/developwithpassion/developwithpassion.bdd

    我使用他的测试框架,bdddoc生成纯英文的html报告,甚至可以通过绑定mbunit和gallio报告来显示测试是否通过。

    不过,格式是每个fixture都有一个 Concern 属性,以便bdddoc拾取和分组规范。

    我的装置命名为 public class When_the_sound_system_is_off... 我的断言是 it (从框架中),所以他们读到 it should_not_be_spinning_a_compact_disc... , it should_emit_no_sound... 等。

    bdddoc可以使用这种下划线语法,但我认为既然您已经在使用mbunit,那么您可能可以提取有趣的代码片段并根据需要进行调整。

        4
  •  0
  •   Rob Fonseca-Ensor    14 年前

    StoryQ有很好的工作流 converting existing unit tests to BDD style -我知道这不是直接回答你的问题,但也许值得一看…

        5
  •  0
  •   Jay Byford-Rew    10 年前

    这个c测试框架也很好地将方法转换为英语

    用户行为和领域驱动的接受故事

    在这里找到- http://kernowcode.github.io/UBADDAS/

    转换此…

    [Test]
    public void IWantToRegisterANewUser()
    {
      ICustomer customer = new Customer();
    
      SoThat(MyBusinessValue.IncreaseCustomerBase)
        .As(new User())
        .Given(customer.Register)
        .When(customer.Confirm_Registration)
        .Then(customer.Login);
    }
    

    对此…

    I want to register a new user
      So that Increase customer base
           As user
        Given Register customer
         When Confirm customer registration
         Then Login customer