正文
foo.bar ==
"hello"
当断言失败时它会显示一个非常清晰的描述:
assert foo.bar == "goodbye"
| | |
| | false
| hello
Foo@12f41634
Mocking:使用Java时,动态模拟框架(如:EasyMock,PowerMock和Mockito)非常流行,这些框架可以在Groovy下方便的使用。耶!
2.支持REST风格
我们的后端提供
REST API
服务来创建和管理账户,众多SDK中,我们的Java SDK提供特定语言客户端模型做简单交互。其中一些SDK也提供网页来和后端交互,从而不用编写代码。
为了保证网络框架的互操作性,它们必须表现的一样。因此我们需要创建一系列基于HTTP的测试。这是我们的
兼容性测试工具
。这个项目由我们的SDK工程师维护,他们精通不止一种语言。因此我们需要跨语言测试工具,谢天谢地
Rest-assured
来了。
Rest-assured是Java领域特定语言(DSL domain-specific language)用来测试REST服务,它简单易用易上手,甚至对于没有用过Java的开发者也是难以置信的强大。它提供先进的特性,比如细节配置、过滤器、定制分析、跨站请求伪造(CSRF)和OAuth 2.0。它提供非常简单的语法:given-when-then。
举个例子:让我们来看它如何校验“向/login路径发送post认证信息请求返回302状态码”:
given() .accept(ContentType.HTML) .formParam("login", account.username)
.formParam("password", account.password) .when() .post(LoginRoute) .then() .statusCode(302)
你可以在我们的
TCK repo
中看到更多Rest-assured测试
3.Cargo Plugin
为了让我们的Java SDK按照TCK校验,我们需要开启我们其中一个Web服务,以便测试在上面执行。讲道理的话,我们需要每次构建时自动测试,
Gargo Plugin
就是为此而生。
Cargo用标准的方式简单封装各种应用容器。我们使用Cargo可以毫不费力的在不同的Servlet容器(比如Jetty和Tomcat)中运行我们的代码。我们只需要在我们的pom文件中配置
Cargo Maven2 Plugin
来启动一个Servlet容器(Tomcat7),在测试阶段编译最近的War包,你可以在我们的
Servlet插件例子