testing - 如何对 Grails 应用程序进行并发修改测试

标签 testing grails functional-testing optimistic-locking concurrentmodification

我想运行模拟用户同时为 grails 应用程序修改某些数据的测试。

我可以使用任何插件/工具/机制来高效地执行此操作吗?它们不必特定于 grails。应该可以并行触发多个操作。

我更愿意在功能级别上运行测试(到目前为止,我正在使用 Selenium 进行其他测试)以从用户角度查看结果。当然,如果您还建议在集成级别运行并发修改测试,那么除了集成测试之外还可以这样做。

最佳答案

我最近为此使用了 Geb (http://grails.org/plugin/geb/)。它是 WebDriver 和 Selenium 等之上的一层。很容易编写一个 Grails 脚本来充当您应用程序中的用户,然后只需在不同的控制台上运行多个实例。 Geb 使用 jQuery 风格的语法在 DOM 中定位内容,这非常酷:

import geb.Browser
import geb.Configuration

includeTargets << grailsScript("_GrailsInit")

target(main: "Do stuff as fast as possible") {

    Configuration cfg = new Configuration(baseUrl: "http://localhost:8080/your_app/")

    Browser.drive(cfg) {
        go "user/login"
        $("#login form").with {
            email = "someone@somewhere.com"
            password = "secret"
            _action_Login().click()
        }
        ...
    }
}

setDefaultTarget(main)

只需将您的脚本放在 scripts/YourScript.groovy 中,然后您就可以执行“Grails YourScript”来运行它。我通过全速运行其中的几个来追踪一些并发问题。您确实需要建立一个 war 并正确部署它,因为开发模式下的 Grails 非常慢并且很快就会耗尽 permgen 空间。

关于testing - 如何对 Grails 应用程序进行并发修改测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4162910/

相关文章:

go - 使用相同的包会污染编译后的二进制文件吗?

grails - 基于嵌入式日期字段的Grais列表不起作用

java - 是否有基于 Java 的预打包解决方案用于用户注册、cookie 检测等?

ruby - 摩卡模拟进行另一项测试

javascript - 为什么我在通过 mochai 和 chai 测试时没有通过 throwing-error 测试?

unit-testing - RAD:依赖注入(inject) - 好处?

database - Grails,在具有复合 id 的域类上使用 read()

elixir - 如何在 Phoenix LiveView 中测试 handle_info/2?

ruby-on-rails - 如何在 Rails 功能测试中调用不同的帖子到不同的 Controller

testing - 在各种配置下测试守护进程的黑盒行为