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

时间:2010-03-12 02:03:52

标签: c# unit-testing tdd bdd

我有一大堆用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,Jay已经提出了BDDDoc。这两个都是行为验证框架,需要对exisitng测试进行重大改写。我们的团队决定将SpecFlow作为主要的BDD框架,我想要实现的是生成现有测试的报告,以了解它是否适​​合BDD方法。

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

去年的演示文稿中,我创建了一个小型BDD单元测试助手,显示正常英语执行的方法名称。它的字符串神奇部分非常薄,所以你可以从中提取它。

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

答案 2 :(得分:1)

查看由JP Boodhoo开发的developwithpassion.bddbdddoc

他的原始博文就在这里:http://blog.jpboodhoo.com/BDDDoc.aspx

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

我使用他的测试框架,BDDDoc通过绑定到mbUnit和Gallio报告,生成简单的英文HTML报告,甚至可以显示测试是否通过。

格式是,每个灯具都有一个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,你可以提取有趣的代码并根据你的需要进行定制。

答案 3 :(得分:0)

StoryQ为converting existing unit tests to BDD style提供了相当好的工作流程 - 我知道这不是直接回答你的问题,但可能值得一试......

答案 4 :(得分:0)

这个C#测试框架在将方法转换为英语方面也做得很好

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

在此处找到 - 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