2011-02-17 42 views
0

我有一个自动生成脚本,它涉及生产模式下一些GWT模块的单元测试。看起来,当这些测试运行时,他们重新编译GWT模块。在已编译模块上运行GWTTestCase

但是,在构建脚本的早些时候,我已经编译了模块。这显然是努力的浪费。有没有人知道测试GWTTestCase以生产模式运行的任何方式,在已经编译好的模块上。

我不介意丢失堆栈跟踪或任何信息,因为构建服务器仅告知开发人员哪些测试失败,并期望他们在自己的环境中进行调试。

回答

0

这将有助于你

在测试基础设施的主类是JUnitShell。要控制测试执行的方面,您必须将参数传递给此类。参数不能直接通过命令行传递,因为正常的命令行参数直接传递给JUnit运行器。相反,请定义系统属性gwt.args以将参数传递给JUnitShell。

例如,要在生产模式(即,将它们编译为JavaScript时运行测试)运行测试,请在调用JUnit时声明-Dgwt.args =“ - prod”作为JVM参数。要获得支持选项的完整列表,请声明-Dgwt.args =“ - help”(而不是运行测试,将帮助打印到控制台)。 在生产模式下运行测试

使用webAppCreator工具时,您可以在开发模式或生产模式下启动测试。确保在两种模式下都进行测试 - 尽管很少见,但Java和JavaScript之间有一些差异,可能会导致您的代码在部署时产生不同的结果。

如果您决定从命令行运行JUnit TestRunner,则必须添加一些其他参数以使您的单元测试在生产模式下运行。默认情况下,在开发模式下运行的测试作为JVM中的普通Java字节码运行。要覆盖此默认行为,则需要将参数传递给JUnitShell

-Dgwt.args =“ - 正式版”

+0

我知道如何在生产代码上运行它,问题在于,当我已经完成该操作时,它会重新编译该项目。我想把它指向我已经编译好的代码... –

0

好吧,我发现了一个解决方案,但它不是elagant。我修改了JUnitShell.maybeCompileForWebMode方法,您应该添加VM参数-Dcompile=false以防止在运行单元测试时进行编译。您可以从here获取JUnitShell的修改版本。