小编pro*_*ski的帖子

客户端 - 服务器集成测试:是否嘲笑?

我正在使用两个应用程序进行项目:android app(客户端)和rest服务(server).我的Android应用程序消耗我的休息服务.

这两个应用程序都是单独测试的,以确保它们按预期开展业务.在服务器测试期间,我准备请求并检查服务器响应 在客户端测试期间,我设置了一个简单的http模拟服务器,并针对不同的模拟响应测试客户端的请求.

现在,这种技术非常有效.它给了我一种我喜欢的灵活性.我可以使用不同的测试框架和持续集成环境.但有一个弱点.在(客户端和服务器)测试用例中,我指定了相同的api.我假设,例如

GET /foo-list.json
Run Code Online (Sandbox Code Playgroud)

将使用json返回HTTP 200

[{
    id: 1,
    name: foo1,
}, {
    id: 2,
    name: foo2
}]
Run Code Online (Sandbox Code Playgroud)

所以我重复一遍.如果我更改响应格式,我的客户端测试不会失败.

我的问题是关于测试这种情况的良好做法.如何在不牺牲独立测试灵活性的情况下进行真正的集成测试.我应该使用模拟服务器或我的休息服务的真实实例来测试客户端吗?

请分享您的专业经验.

testing client integration-testing client-server mocking

16
推荐指数
2
解决办法
3911
查看次数

Grails域标准验证器:我应该测试吗?

这是grails应用程序中的一个简单域类:

class User {
    String username

    static constraints = {
        username unique: true
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:我应该编写单元测试来检查用户名字段是否唯一?

@Test
void cannotCreateMoreThanOneUserWithTheSameUsername() {
    new User(username: 'john').save()

    def secondUser = new User(username: 'john')
    assert !secondUser.validate()
}
Run Code Online (Sandbox Code Playgroud)

我有点怀疑,因为:

  • 如果我按照TDD原则编写User类,那么我应该在实现约束闭包之前编写失败的测试.

  • 另一方面,在域中设置唯一约束是数据模型配置而不是真实逻辑.而且,保存和验证方法在框架中实现.

testing tdd grails unit-testing

2
推荐指数
1
解决办法
167
查看次数