【发布时间】:2012-07-21 07:02:15
【问题描述】:
在我看来,自 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”吗? 当然,每种语言和框架都会在主题上有所不同,但是是否有不同的通用“主题”/样式?
【问题讨论】:
-
我不确定我是否完全正确理解了您的问题。有单元测试框架,如 NUnit、Visual Studio 中内置的一个和其他几个。这些可用于基于状态的测试。如果您还想使用基于行为的测试,您可能需要使用隔离(模拟)框架之一,例如 Rhino Mocks、MOQ、TypeMock,......此外,您可以执行集成测试以一起测试多个组件。自动化 UI 测试是另一种工具,例如用于测试 Web 服务的 soapUI(尽管我认为这是集成测试)。
-
我试图扩展这个问题。希望它更清楚。
-
不确定它是否符合您的问题,但我看到开发人员将
// Given、// When和// Thencmets 放在他们的 jUnit 测试中,通过描述先决条件和经过测试的事件来帮助编写它们,以及预期的结果。 -
@DamienPollet,是的,这就是我正在寻找的东西。通过您的关键字,我发现了一个有趣的链接:rapaul.com/2009/08/09/bddmockito-eclipse
标签: unit-testing testing tdd bdd