Revel提供了一个测试框架,这使得在应用程序中写和运行测试函数变得很容易.
专注于为中小企业提供成都网站设计、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业临沧免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
skeleton应用程序带有一个简单的测试来帮助我们测试.
概要
测试保存在tests目录
- corp/myapp
- app/
- conf/
- public/
- tests/ <----
一个简单的测试看起来像下面这样:
- type ApplicationTest struct {
- rev.TestSuite
- }
- func (t ApplicationTest) Before() {
- println("Set up")
- }
- func (t ApplicationTest) TestThatIndexPageWorks() {
- t.Get("/")
- t.AssertOk()
- t.AssertContentType("text/html")
- }
- func (t ApplicationTest) After() {
- println("Tear down")
- }
上面的示例代码展示了几件事:
你可以已两种方式运行测试:
开发一个测试工具
创建一个你自己的测试工具, 定义一个嵌入 rev.Testsuite的struct, 它提供一个HTTP客户端和许多帮助方法来发出请求到你的应用程序.
- type TestSuite struct {
- Client *http.Client
- Response *http.Response
- ResponseBody []byte
- }
- // Some request methods
- func (t *TestSuite) Get(path string)
- func (t *TestSuite) Post(path string, contentType string, reader io.Reader)
- func (t *TestSuite) PostForm(path string, data url.Values)
- func (t *TestSuite) MakeRequest(req *http.Request)
- // Some assertion methods
- func (t *TestSuite) AssertOk()
- func (t *TestSuite) AssertContentType(contentType string)
- func (t *TestSuite) Assert(exp bool)
- func (t *TestSuite) Assertf(exp bool, formatStr string, args ...interface{})
全部的请求方法表现相似:
如果开发人员希望使用自定义的HTTP Client代替默认的 http.DefaultClient, 它们应该在Before()方法里面替换它.
如果它们没有满足条件全部断言都将产生一个panic. 全部的panic被测试harness捕获并展示为错误.
运行一个测试工具
为了运行任何测试, testrunner模块必须被激活. 添加下面一行代码到 app.conf 以保证激活它
- module.testrunner = github.com/robfig/revel/modules/testrunner
完成上面之后测试就被运行了(交互式或非交互式)
运行交互式的测试
利用Revel的热编译功能, 一个交互式的测试运行器用来提供给快速编辑刷新的循环工作.
例如, 开发人员在他们的浏览器加载 /@tests
然后他们添加一个测试方法
- func (t ApplicationTest) TestSomethingImportant() {
- t.Get("/")
- t.AssertOk()
- t.AssertContentType("text/xml")
- }
刷新页面将看到新的测试方法
运行这个测试
它没有正常工作. 我们来修复这个问题替换 “text/xml” 为 “text/html”, 刷新浏览器:
成功.
运行非交互式的测试
Revel 命令行工具 提供了一个 test 命令, 它运行全部的应用程序在命令行工具中运行测试.
示例如下:
- $ revel test github.com/robfig/revel/samples/booking dev
- ~
- ~ revel! http://robfig.github.com/revel
- ~
- INFO 2012/11/09 19:21:02 revel.go:237: Loaded module testrunner
- Open DB
- Listening on port 9000...
- INFO 2012/11/09 19:21:06 test.go:95: Testing Booking example (github.com/robfig/revel/samples/booking) in dev mode
- Go to /@tests to run the tests.
- test suite to run.
- ApplicationTest PASSED 0s
- All Tests Passed.
在控制台只有一个简单的 PASSED/FAILED 概要通过测试工具来显示. 这个工具写入更多的结果到文件系统:
- $ cd src/github.com/robfig/revel/samples/booking
- $ find test-results
- test-results
- test-results/app.log
- test-results/ApplicationTest.passed.html
- test-results/result.passed
它写入了3个不同的东西:
这里有两个集成这个到持续构建的建议机制
实现说明
Revel做了什么:
开发区域
可以使用以下方式改进测试框架
至此结束
原文链接:http://www.cnblogs.com/ztiandan/archive/2013/01/09/2846073.html
本文名称:GolangWeb开发之Revel测试
文章网址:http://www.csdahua.cn/qtweb/news26/551076.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网