获取PHPUnit的控制台输入

时间:2010-08-11 13:56:55

标签: php unit-testing phpunit

我希望在运行PHPUnit测试用例时提示输入,然后将该输入用作测试的一部分。换句话说,我想为字段使用动态输入值。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

简答:你不应该

Long Asnwer:你真的不应该因为它严重违反了goals of unittesting

虽然echo "Input for Test 7: "; $input = fgets(STDIN);很容易,但单元测试的工作方式并非如此。 根据您的用例,可能是这样做的理由,但我想不出任何因为解决方案是微不足道的,我使用帖子的其余部分来描述您可能不想这样做的原因。

单位测试意味着经常运行。真的很经常。每次编辑文件时,许多人都会使用运行测试的设置。但至少每次在将代码检入源代码管理系统之前。 你真的想每次写1(或10或50)行,以便你的测试套件运行吗?

Unittests的最大好处是你有一个系统来处理一个非常重要的问题“如果我在这里放置与昨天相同的东西,它是否仍提供相同的输出/它仍然有效” 。所以我不认为每次都有不同的东西。

如果你更进一步,使用自动化系统来运行测试并发送电子邮件,以防测试失败,那里没有任何人提供输入,所以你不能使用它...一个很大的理由使用unittesting是令人兴奋的;)


如果你确定自己在做什么:抱歉'咆哮'


编辑(您的回复仅在我发布后显示):其他动态输入也是如此。 Imho你想确保结果是可重复的。如果你只需要一个临时变量/ foldername / key /这不是一个大问题。我只是使用md5(mt_rand())或其他东西。即便如此,如果你能以一种不必要的方式设置你的测试也是很好的