在 C# 的 SQL 服务器中处理多用户环境中的数据库快照
Handle database snapshots in multi user Environment in SQL Server in C#
我用 C# 编写了一些测试,它们使用数据库,更新和修改其中的值。为了确保数据库在每次测试后恢复到之前的状态,我执行以下操作:
我制作了测试套件开始时使用的所有数据库的快照。每次测试后,我将数据库恢复到它的快照,以确保没有为即将 运行 的新测试用例对数据库进行任何更改。在测试套件结束时,我删除了创建的快照。
这里是测试的初始化和清理方法class
[ClassInitialize()]
public static void ClassInit(TestContext context)
{
CreateDatabaseSnapshots();
}
[ClassCleanup()]
public static void ClassCleanup()
{
DeleteDatabaseSnapshots();
}
这是在测试套件中的每个测试之后执行的方法。
[TestCleanup()]
public void TestCleanup()
{
tRevertDatabase();
}
我的问题:在多用户环境中,我应该如何处理创建数据库快照的任务?当我的测试套件仍在 运行ning 并且 his/her 测试可能会失败时,可能会创建不正确的快照,甚至数据库可能会在测试套件结束时恢复到不正确的状态。在调用 CreateDatabaseSnapshots();
和 DeleteDatabaseSnapshots();
之前必须完成哪些必要的检查?
我只想确保数据库在测试过程中不受影响。我也尝试过使用备用数据库、事务范围和其他替代方案,但它们无法在我的场景中使用,因此使用快照是唯一可行的选择。
与其修改数据库的环境,不如这样做:
1.) Take database snapshot of your database.
2.) Attach database snapshot to the local machine of the test-user. (Test initialize)
3.) Modify the database on the test environment of the user during automated testing.
注意:您可以在清理期间停止将数据库重置回原始状态,因为每次您的测试初始化时,您都在创建目标数据库的新本地副本。 (或者只处理本地数据库副本)
在测试过程中,有时您希望拥有自己的测试环境,除非您的测试场景应该包含来自不同测试人员的数据修改。
我用 C# 编写了一些测试,它们使用数据库,更新和修改其中的值。为了确保数据库在每次测试后恢复到之前的状态,我执行以下操作:
我制作了测试套件开始时使用的所有数据库的快照。每次测试后,我将数据库恢复到它的快照,以确保没有为即将 运行 的新测试用例对数据库进行任何更改。在测试套件结束时,我删除了创建的快照。
这里是测试的初始化和清理方法class
[ClassInitialize()]
public static void ClassInit(TestContext context)
{
CreateDatabaseSnapshots();
}
[ClassCleanup()]
public static void ClassCleanup()
{
DeleteDatabaseSnapshots();
}
这是在测试套件中的每个测试之后执行的方法。
[TestCleanup()]
public void TestCleanup()
{
tRevertDatabase();
}
我的问题:在多用户环境中,我应该如何处理创建数据库快照的任务?当我的测试套件仍在 运行ning 并且 his/her 测试可能会失败时,可能会创建不正确的快照,甚至数据库可能会在测试套件结束时恢复到不正确的状态。在调用 CreateDatabaseSnapshots();
和 DeleteDatabaseSnapshots();
之前必须完成哪些必要的检查?
我只想确保数据库在测试过程中不受影响。我也尝试过使用备用数据库、事务范围和其他替代方案,但它们无法在我的场景中使用,因此使用快照是唯一可行的选择。
与其修改数据库的环境,不如这样做:
1.) Take database snapshot of your database.
2.) Attach database snapshot to the local machine of the test-user. (Test initialize)
3.) Modify the database on the test environment of the user during automated testing.
注意:您可以在清理期间停止将数据库重置回原始状态,因为每次您的测试初始化时,您都在创建目标数据库的新本地副本。 (或者只处理本地数据库副本)
在测试过程中,有时您希望拥有自己的测试环境,除非您的测试场景应该包含来自不同测试人员的数据修改。