在我的Play中运行测试的一个选项!应用程序是通过执行命令play auto-test
。
Play似乎确定要运行的测试的方法之一是使用超类play.test.UnitTest
(或其他Play等效项)查找所有测试类。有一个测试类扩展UnitTest
似乎带来了一些开销,如控制台中吐出的这些东西所示:
INFO info, Starting C:\projects\testapp\.
WARN warn, Declaring modules in application.conf is deprecated. Use dependencies.yml instead (module.secure)
INFO info, Module secure is available (C:\play-1.2.1\modules\secure)
INFO info, Module spring is available (C:\projects\testapp\.\modules\spring-1.0.1)
WARN warn, Actually play.tmp is set to null. Set it to play.tmp=none
WARN warn, You're running Play! in DEV mode
INFO info, Connected to jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
INFO info, Application 'Test App' is now started !
显然,为需要这样设置的测试设置Play环境很有用,但是,如果我有一个测试类来测试生产代码,该代码执行不需要Play环境的逻辑,我不想扩展{ {1}}这样我就可以避免启动Play环境的开销。
如果我有一个不扩展UnitTest
的测试类,则它不会被命令UnitTest
执行。有没有办法让play auto-test
命令执行所有测试,无论我是否延长Play的play auto-test
?
编辑:有人为这个问题提出了ticket
答案 0 :(得分:2)
您有两个选择:要么通过任务向Play的Ant文件添加额外的任务以运行单元测试(您还需要包含相关的jar),或者编辑用于启动Play测试环境的代码。
两者都意味着将框架更改为某个级别。虽然假设您正在使用Play,但我想知道为什么您不应该按照Play模式进行所有测试......
答案 1 :(得分:0)
如果这些测试不需要任何播放!功能,你为什么不把它们放在图书馆?使用您的示例(math add):创建一个calculator.jar包,并在运行测试后使用Ant或Maven构建它。 像这样,你可以在几个Play中使用你的库!项目(或Spring,Struts,......如果你愿意的话。
答案 2 :(得分:0)
我真的不明白为什么问题本身甚至是值得商榷的。进行简单和小型的单元测试(即使在项目的Web部分中)也是最常见的事情。 如果您有许多测试,框架初始化的额外开销会显着减慢您的往返次数。正如在故障单中可以看到的,当前的解决方法是使您的单元测试扩展org.junit.Assert而不是play.test.UnitTest