2012-07-21 42 views
1

从我看来,自从SUnit,JUnit和常用的xUnit测试框架以来,测试已经走过了很长一段路。测试框架有哪些“样式”?

我查看了RSpecCucumber以了解什么是“行为驱动”测试关于什么,但现在我确实想知道编写单元测试存在哪种类型的其他方法。

我没有被绑定到任何特定的语言,但更感兴趣的测试代码的一般想法和方法。

所以,我的问题是,单元测试有哪些风格不同的方法,即与“断言”不同的方法。

我举的例子:

单位试井的xUnit的风格看起来大致是这样在你的FAVORIT语言:

stack = new Stack() 
assertTrue (stack.empty()) 

stack.push(1) 
assertFalse (stack.empty()) 
assertEquals(1, stack.top()) 

RSpec的风格单元试井看起来非常像这样(大约即兴) :

describe Stack do 

    it "should be empty" do 
    Stack.new.empty?.should == true 
    end 

    it "should contain new value on top" do 
    stack = Stack.new 
    stack.push(1) 
    stack.empty?.should == false 
    stack.top().should == 1 
    end 
end 

还有其他有趣的风格,符号'DSL'吗? 当然,每种语言和框架都会有不同的主题,但是有不同的一般'主题'/风格吗?

+0

我不知道我是否完全正确地理解你的问题。有单元测试框架作为NUnit,Visual Studio中内置的单元测试框架以及其他一些框架。这些可用于基于状态的测试。如果您还想使用基于行为的测试,则可能需要使用Rhino Mocks,MOQ,TypeMock等隔离(模拟)框架之一。此外,您可以执行集成测试,以便将多个组件一起测试。自动UI测试是另一种工具,例如soapUI用于测试Web服务(尽管我会将其看作集成测试)。 – Gorgsenegger 2012-07-21 08:11:37

+0

我试图扩大这个问题。希望它更清楚。 – smarr 2012-07-21 09:22:27

+1

不确定它适合你的问题,但我已经看到开发人员在他们的jUnit测试中放置'// Given','// When'和'// Then'注释来帮助他们描述前提条件,测试事件,和预期的结果。 – 2012-07-21 09:30:38

回答

0

我个人很喜欢Given,When,Then键入语法进行测试。

Given some particular situaion 
When some action occurs 
Then there will be an outcome that can be verified. 

我开始了使用像.NET StoryQSpecFlow工具,这是真正整洁这种方法。自从我开始编写我自己的little framework这更适合我自己的个人风格,但还不是特别成熟。

1

我只能想到两种风格的测试。以代码为中心(xUnit和RSpec给出上面的代码)和以行为为中心的(cucumber,SpecFlow - Given/Then/When)。 现在,您可以在代码中心框架(代码#1)中进行行为风格的测试。

也有三种类型的测试:

  • Mockists - 大部分依赖的是(严格)嘲笑。
  • Stubbists - 大多数依赖关系被残留。
  • 集成 - 大部分依赖是真实的。

代码#1:

@Test 
public void theScenarioDescription() { 
    givenThatSomething(); 
    whenIWiggleIt(); 
    thenSomethingHasHappened(); 
}