我有一个自动构建脚本,它涉及在生产模式下对某些GWT模块进行单元测试。看来,当运行这些测试时,它们会重新编译GWT模块。
但是,在构建脚本的早期,我已经编译了模块。这显然是浪费精力。有没有人知道在已经编译的模块上测试GWTTestCase以生产模式运行的任何方法。
我不介意丢失堆栈跟踪或任何信息,因为构建服务器只会告知开发人员哪些测试失败,并期望他们在自己的环境中进行调试。
答案 0 :(得分:0)
这对你有帮助
测试基础架构中的主要类是 JUnitShell 。要控制测试执行方式,必须将参数传递给此类。参数不能直接通过命令行传递,因为正常的命令行参数直接转到JUnit运行程序。相反,定义系统属性gwt.args以将参数传递给JUnitShell。
例如,要在生产模式下运行测试(即,在编译成JavaScript后运行测试),声明-Dgwt.args =“ - prod”作为JVM参数调用JUnit。要获得支持选项的完整列表,请声明-Dgwt.args =“ - help”(而不是运行测试,帮助将打印到控制台)。 在生产模式下运行测试
使用webAppCreator工具时,您可以在开发模式或生产模式下启动测试。确保您在两种模式下进行测试 - 尽管很少见,但Java和JavaScript之间存在一些差异,可能导致您的代码在部署时产生不同的结果。
如果您决定从命令行运行 JUnit TestRunner ,则必须添加一些其他参数以使您的单元测试在生产模式下运行。默认情况下,在开发模式下运行的测试作为JVM中的普通Java字节码运行。要覆盖此默认行为,您需要将参数传递给JUnitShell
-Dgwt.args = “ - PROD”
答案 1 :(得分:0)
嗯,我找到了一个解决方案,但它不是很好。我修改了JUnitShell.maybeCompileForWebMode
方法,你应该添加VM参数-Dcompile=false
以防止在运行单元测试时进行编译。您可以从here获取JUnitShell的修改版本。