用PHP进行自动测试

用PHP进行自动测试,php,asp.net-mvc,comparison,automated-tests,Php,Asp.net Mvc,Comparison,Automated Tests,我是一名.net开发人员,请原谅我对PHP一无所知。我在网上读了一些东西,但我说不出它在自动化测试方面与Asp.NETMVC相比有什么不同 我倾向于认为PHP非常像经典的ASP,只是它是面向对象的,是吗?。为了提高其可测试性,您必须遵循特定的开发模式和代码风格,以提供类似于Asp.net WebForm的SoC,例如,您必须进行MVP,但您离Asp.net MVC提供的现成功能还有几光年的距离 所以。在编写自动化测试方面,PHP与Asp.NETMVC相比如何?当然,最显著的是单元测试?我必须使用

我是一名.net开发人员,请原谅我对PHP一无所知。我在网上读了一些东西,但我说不出它在自动化测试方面与Asp.NETMVC相比有什么不同

我倾向于认为PHP非常像经典的ASP,只是它是面向对象的,是吗?。为了提高其可测试性,您必须遵循特定的开发模式和代码风格,以提供类似于Asp.net WebForm的SoC,例如,您必须进行MVP,但您离Asp.net MVC提供的现成功能还有几光年的距离

所以。在编写自动化测试方面,PHP与Asp.NETMVC相比如何?当然,最显著的是单元测试?我必须使用某些库吗?我是否必须遵循某些规则/模式才能使其发挥作用


持续集成如何?测试也可以在那里自动运行吗?

根据具体情况,我使用了三种测试:SimpleTest、PHPUnit和Zend_测试,它们实际上只是PHPUnit与Zend框架一起使用的包装器。其中,SimpleTest确实更容易。然而,PHPUnit提供了很多功能和灵活性。

根据具体情况,我使用了三种测试:SimpleTest、PHPUnit和Zend_测试,它们实际上只是PHPUnit与Zend框架一起使用的包装器。其中,SimpleTest确实更容易。然而,PHPUnit提供了很多功能和灵活性。

我不是.net开发人员,所以我无法比较两者,但我可以帮助填补一些关于PHP的空白

首先,虽然PHP确实像您习惯的那样支持类和OOP,但这并不是必需的。事实上,一些基于PHP的项目(如Drupal)中几乎没有OO代码


至于测试PHP代码,您可能需要使用PHPUnit。它实现了对PHP中代码的测试。但是如果您不喜欢PHPUnit,那么您可能想查看SimpleTest,这是一个稍微不同的PHP测试框架。

我不是.net开发人员,所以我无法比较两者,但我可以帮助填补一些关于PHP的空白

首先,虽然PHP确实像您习惯的那样支持类和OOP,但这并不是必需的。事实上,一些基于PHP的项目(如Drupal)中几乎没有OO代码


至于测试PHP代码,您可能需要使用PHPUnit。它实现了对PHP中代码的测试。但是如果您不喜欢PHPUnit,那么您可能需要查看SimpleTest,这是一个稍有不同的PHP测试框架。

PHP无法与asp.net mvc相比,因为PHP是一种类似于c的语言 它们都有OO,您可以像在asp.net中那样测试方法和类

就像在asp.net中一样,php中也有mvc。您可能希望了解一些类似Symfony的框架,它们在相同的mvc模型上工作

net中的测试是使用NUnit或其他工具完成的,在PHP中有一些类似的工具,如PHPUnit,在Symfony中也有Lime

事实上,我正处于一个从php到现在在c开发的境地,这一切几乎都是一样的


测试可以自动运行,在.net中,您可能知道nant自动测试和构建工具,ant对于php/java和hudson来说是一样的,可以作为一种工具来获取所有构建的概述。

php与asp.net mvc不可比,因为php是一种类似于c的语言 它们都有OO,您可以像在asp.net中那样测试方法和类

就像在asp.net中一样,php中也有mvc。您可能希望了解一些类似Symfony的框架,它们在相同的mvc模型上工作

net中的测试是使用NUnit或其他工具完成的,在PHP中有一些类似的工具,如PHPUnit,在Symfony中也有Lime

事实上,我正处于一个从php到现在在c开发的境地,这一切几乎都是一样的


测试可以自动运行,在.net中,您可能知道nant自动测试和构建工具,ant对于php/java和hudson来说是一样的,可以作为一个工具来获得所有构建的概述。

所以基本上你的意思是:如果你想进行单元测试,你必须像通常在其他任何地方一样,自己负责SoC和IoC,然后使用一些单元测试库+单独的测试运行程序来实现它?是吗?@Robert假设关注点分离,测试应该如何处理SoC?这难道不是一个与测试无关的编程问题吗?@ircmaxell:测试并不关心SoC。应用程序框架在Asp.net MVC中不起作用。在PHP中,您可能需要亲自处理它,或者手动处理,或者使用一些库(我认为类似于将MVVMPrizm框架与Silverlight一起使用)。然而,SoC是提高可测试性的必要组成部分。@Robert:相信我,我理解SoC的重要性。我不理解的是,框架应用程序或测试如何为您处理SOC。当然,它可以像MVC那样推动您实现分离关注点的约定,但最终还是由您来进行分离。我不确定一个库在任何情况下都能为您做到这一点,但仅限于PHP或ASP。如果你要的是建筑风格的f

框架引导你沿着这条路走,这里有。但这并不适合你……我不知道你对Asp.net MVC框架有多熟悉,但开发人员编写代码的方式迫使你将每个功能单元分开。控制器是不访问任何视图元素的简单类。它们只是为它们提供数据并返回一个视图。框架在内部执行视图呈现和数据刷新。另一方面,模型也与控制器分离,更不用说视图了。因此,SoC本质上是受项目结构的影响。当然,你必须照顾好IoC,但SoC是你不必考虑太多的东西。因此,基本上你的意思是:如果你想做单元测试,你必须照顾好SoC,自然地照顾好IoC,就像通常在其他任何地方一样,你自己,然后使用一些单元测试库+单独的测试运行程序来实现它?是吗?@Robert假设关注点分离,测试应该如何处理SoC?这难道不是一个与测试无关的编程问题吗?@ircmaxell:测试并不关心SoC。应用程序框架在Asp.net MVC中不起作用。在PHP中,您可能需要亲自处理它,或者手动处理,或者使用一些库(我认为类似于将MVVMPrizm框架与Silverlight一起使用)。然而,SoC是提高可测试性的必要组成部分。@Robert:相信我,我理解SoC的重要性。我不理解的是,框架应用程序或测试如何为您处理SOC。当然,它可以像MVC那样推动您实现分离关注点的约定,但最终还是由您来进行分离。我不确定一个库在任何情况下都能为您做到这一点,但仅限于PHP或ASP。如果您需要一个架构框架来引导您沿着这条路走下去,那么有很多。但这并不适合你……我不知道你对Asp.net MVC框架有多熟悉,但开发人员编写代码的方式迫使你将每个功能单元分开。控制器是不访问任何视图元素的简单类。它们只是为它们提供数据并返回一个视图。框架在内部执行视图呈现和数据刷新。另一方面,模型也与控制器分离,更不用说视图了。因此,SoC本质上是受项目结构的影响。当然,你必须关注IoC,但SoC是你不必考虑太多的事情。因此,如果你根本不做OOP,你就进入了一个重摇滚的单元测试阶段。不一定。您没有理由不能编写代码来使用PHPUnit测试代码,而这些代码只是一堆函数。但它确实让安装/拆卸变得更具挑战性,因为在OO环境中,创建一个新对象理论上应该可以让您从头开始。基本上,即使没有MVP这样的模式,您也可以对标准Asp.net webforms应用程序进行单元测试,但是您会遇到很多工作和麻烦。这里也一样。谢谢你的信息+1所以,如果你根本不做OOP,你就陷入了单元测试的泥潭。不一定。您没有理由不能编写代码来使用PHPUnit测试代码,而这些代码只是一堆函数。但它确实让安装/拆卸变得更具挑战性,因为在OO环境中,创建一个新对象理论上应该可以让您从头开始。基本上,即使没有MVP这样的模式,您也可以对标准Asp.net webforms应用程序进行单元测试,但是您会遇到很多工作和麻烦。这里也一样。谢谢你的信息+我一定在某种程度上不同意你的意见。PHP是一种语言。授予。但它也是一个网络平台。另一方面,C不是。Asp.net MVC是一个平台,但不是一种语言。所以我知道任何web平台都可以选择wast库来执行MVC/MVVM/MVP模式。但我认为没有其他平台像Asp.NETMVC那样强制执行SoC。除此之外,你别无选择。可以这么说。在其他平台上,您随时可以随心所欲。Asp.NETWebForms也是如此。我也承认我的问题不是用最好的方式写的。但现在改变已经太迟了,因为它会自动放弃你所有的答案。所以谢谢你提供的意见。我一定在某种程度上不同意你的意见。PHP是一种语言。授予。但它也是一个网络平台。另一方面,C不是。Asp.net MVC是一个平台,但不是一种语言。所以我知道任何web平台都可以选择wast库来执行MVC/MVVM/MVP模式。但我认为没有其他平台像Asp.NETMVC那样强制执行SoC。除此之外,你别无选择。可以这么说。在其他平台上,您随时可以随心所欲。Asp.NETWebForms也是如此。我也承认我的问题不是用最好的方式写的。但现在改变已经太迟了,因为它会自动放弃你所有的答案。因此,感谢您提供的意见。