我正在为一个在数据库中维护用户的PHP类编写单元测试.我现在想测试创建用户是否有效,以及删除用户是否有效.我看到有多种可能性:
我已经读过每个测试方法应该独立于其他测试方法,这意味着第三种可能性是要走的路,但这也意味着每个方法都必须自己设置测试数据(例如,如果你想测试它是否可能)添加用户两次).
你会怎么做?在这种情况下,什么是好的单元测试风格?
两个不同的东西=两个测试.
Test_DeleteUser()也可以在不同的测试夹具中,因为它具有Setup()确保用户已经存在的不同代码.
[SetUp]
public void SetUp()
{
CreateUser("Me");
Assert.IsTrue( User.Exists("Me"), "Setup failed!" );
}
[Test]
public void Test_DeleteUser()
{
DeleteUser("Me");
Assert.IsFalse( User.Exists("Me") );
}
Run Code Online (Sandbox Code Playgroud)
这意味着如果Test_CreateUser()通过Test_DeleteUser()而不通过- 您知道代码中负责删除用户的部分中存在错误.
更新:只是考虑一下Charlie对依赖问题的评论 - 我的意思是如果Creation被破坏,即使删除,两个测试都会失败.我能做的最好的事情是移动一个防护检查,以便安装程序显示在错误和失败选项卡中; 区分设置失败(在一般情况下,整个测试夹具显示红色应该很容易发现设置失败.)