- Introduction
- Quick Start
- Design
- Tutorial
- Spring MVC
- JSP/JSTL/Servlet
- JQuery and plugins
- Ajax
- Twitter Bootstrap CSS
- SiteMesh
- YUICompressor
- Spring Restful Service
- JAX-WS/CXF
- Spring Data JPA
- JPA/Hibernate
- MyBatis
- Database
- H2 Database
- Datasource
- Transaction
- Redis
- Cache Overview
- Guava Cache
- Ehcache
- Memcached
- Shiro Security
- Crypto
- Schedule/Quartz
- Jmx
- System Protection
- Hystrix
- Rate Limiter
- Monitoring and Metrics
- Metrics-library
- Graphite
- Logging/Slf4j/Logback
- Logstash
- Spring
- Validation Overview
- JQuery Validation
- Hibernate Validator
- General Utilizes
- JSON/JAXB
- Date
- Test Overview
- Unit Test/Mockito/AssertJ
- Selenium2
- BDD
- Performace-test
- JMeter
- Profiler
- Simulator Overview
- Nodejs
- Eclipse
- Maven
- Sonar
- git
- Travis CI
- Jetty
- Micro-Service Architecture/Executable War
- AssertJ
- CreateNewProject
- Dozer
- Graphite-Windows
- Hello-Everybody
- Jaxb
- Json
- Mock
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
BDD
1.Overview
BDD(Behavior Driven Development)的最大好处是,可以让Product Owner(需求人员),功能测试设计人员 和 功能测试实现人员,在同一个地方工作,不需要从需求到测试计划到测试代码的映射。
BDD正宗的做法是Cucumber(黄瓜)的JVM版 和 JBehave,个人喜欢JBehave多一点,因为不需要写正则表达式。
但如果要在项目里推行,ScalaTest可能更加实际,因为不需要建立文本到代码的映射,也就没有英文语法的问题,没有文本与代码间抽象粒度的问题。
2.JBehave
需求与测试计划合一的User Story: 语句到Java测试代码的映射
3.ScalaTest
3.1 showcase里的示例代码: examples/showcase/src/test/scala/account/UserManagerSpec.scala
class UserManagerSpec extends FeatureSpec with GivenWhenThen with Matchers with BeforeAndAfterAll with WebBrowser {
implicit val webDriver: WebDriver = new FirefoxDriver
val host = "http://localhost:8080/showcase"
feature("User Managament") {
info("As a administrator")
info("i want to list and edit the current users, but i don't want to add new user")
scenario("Edit user1") {
Given("Go to user management page")
goToUserManagementPage()
Given("Login as admin if necessary")
loginAsAdminIfNecessary()
When("Edit user1 with new name")
click on id("editLink-user")
textField("name").value = "user_foo"
click on id("submit_btn")
Then("user1 with new name display in user edit page")
click on id("editLink-user")
textField("name").value should be("user_foo")
}
}
这个UserManagerSpec多重继承了ScalaTest的多个特征:
- FeatureSpec 和 GiveWhenThen,看起来最BDD的组织形式,支持feature/scenario关键字来组织cases,以及的info/markup的消息语句,还有标准的given/when/then关键字,scalatest里还有其他几种风格,见Selecting testing styles
- Matchers,关于assert的DSL,可以写成 i should be(1),见Using matchers
- BeforeAndAfterAll ,与JUnit里的概念相同。
- WebBrowser,关于Selenium的DSL,可以写成 click on id("q"),见Using Selenium
3.2 如何开始
- 在www.scala-lang.org下载Scala。
- 在scala-ide.org安装Eclipse插件,记得勾选安装scalatest模块。同时将项目Enable Scala Nature。
- 在pom.xml里引入scala test插件,见showcas的pom.xml里的bdd-test profile。
先启动Showcase,然后会自行mvn test -Pbdd-test, 运行效果会打印如下。也会生成好读的html报告,既是需求列表,也是测试报告。
如果用例出错,信息就只打到出错的那一步。
UserManagerSpec:
Feature: User Managament
As a administrator
i want to list and edit the current users, but i don't want to add a new use
Scenario: Edit user1
Given Go to user management page
Given Login as admin if necessary
When Edit user1 with new name
Then user1 with new name display in user edit page
Run completed in 56 seconds, 586 milliseconds.
Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论