在我看来,自SUnit,JUnit和常见的xUnit测试框架以来,测试已经走过了漫长的道路。
我查看RSpec和Cucumber以了解“行为驱动”测试的内容,但现在我确实想知道编写单元测试的其他方法是什么。
我不依赖于任何特定语言,但对测试代码的一般想法和方法更感兴趣。
所以,我的问题是,在单元测试方面存在风格上不同的方法,即与“断言”不同的方法。
让我举个例子:
单元测试的xUnit样式在您喜欢的语言中看起来大致相同:
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 :(得分:1)
我只能想到两种测试方式。代码为中心(xUnit和RSpec给出上面的代码)和行为中心(黄瓜,SpecFlow - 给定/然后/当)。 现在,您可以在以代码为中心的框架(代码#1)中执行行为样式测试。
您还有三种类型的测试:
代码#1:
@Test
public void theScenarioDescription() {
givenThatSomething();
whenIWiggleIt();
thenSomethingHasHappened();
}
答案 1 :(得分:0)
我个人非常喜欢Given,When,Then类型语法进行测试。
Given some particular situaion
When some action occurs
Then there will be an outcome that can be verified.
我开始使用这种方法,使用.NET上的StoryQ和SpecFlow等工具,这些工具非常整洁。我从那以后开始编写自己的little framework,这更适合我个人的风格,但还不是特别成熟。