2011-04-09 25 views
5

我正在为我的项目的后端应用程序模块写作功能测试。为了测试一些功能,我需要从前端应用程序模拟用户操作。所以,我创建了2Symfony:一个测试中的多个应用程序

sfTestFunctional instances: 
$frontendBrowser = new frontendTestFunctional(); 
$backendBrowser = new backendTestFunctional(); 

这些类基本上继承自sfTestFunctional。现在,我们知道,symfony的每个应用程序都有自己的上下文实例,所以我们必须先切换到它:

sfContext::switchTo('frontend'); 
//this works fine 
$frontendBrowser-> 
    get('/home'); 

sfContext::switchTo('backend'); 
//the following fails with a misirable error: Cannot redeclare class homeComponents 
$backendBrowser-> 
    get('/home'); 

那么,问题是,这两个页面具有相同的名称自己的类(homeComponents )显然不能包含在一个脚本中。有什么我可以做的吗?

PS的问题不一定Symfony的关系,所以我也将其标记为“PHP”

更新:似乎是唯一的解决办法是在一个应用程序中所有的模块重命名,使动作和组件类有不同名。但这是非常重要的。

+0

为什么不一次只运行两个测试? – Ibu 2011-06-07 08:32:30

+0

,因为在测试其他应用时,您可能需要从一个应用获得一些结果。 – Dziamid 2011-06-07 11:50:14

+0

然后你可以创建一个shell脚本来运行它们 – Ibu 2011-06-07 15:45:28

回答

1

你可能会考虑把测试分成两个不同的测试。

第一个运行前端应用程序,然后检查以确保数据库,会话等的状态是正确的。

第二个测试将设置测试环境,以模拟前端应用程序成功完成的结果,然后运行后端应用程序并检查结果。

这也将有助于在任何应用场合回归表面的情况;如果您要保持两个应用程序的测试合并,那么测试失败的信息就会减少。通过为每个应用程序单独测试,您将能够更轻松地找到回归(因为您至少知道哪个应用程序受到影响)。

+0

这是我如何解决这个问题的。关于回归的好点。 – Dziamid 2011-06-08 08:25:20

+0

在处理[Symfony 1.4的PHPUnit插件](http://www.symfony-project.org/plugins/sfJwtPhpUnitPlugin)时,我遇到了类似的问题。 PHPUnit确实有一个'--process-isolation'选项,它在自己的进程中运行每个测试,但它使得测试执行成为... ... ... ... ... ... w ... .... – 2011-06-08 19:50:31

相关问题