繁体   English   中英

集成测试垃圾数据

[英]Integration testing garbage data

我已经使用MSTest设置了集成测试。 我的集成测试会创建虚假数据并将其插入数据库(真实依赖项)。 对于每个业务对象,我都有一个像这样的方法,该方法创建一个“假”并将其插入到数据库中:

public static EventAction Mock()
{
    EventAction action = Fixture.Build<EventAction>().Create();
    action.Add(false);
    AddCleanupAction(action.Delete);
    AppendLog("EventAction was created.");
    return action;
}

我在[AssemblyCleanup]中清理了所有假货:

public static void CleanupAllMockData()
{
    foreach (Action action in CleanUpActions)
    {
        try
        {
            action();
        }
        catch
        {
            AppendLog($"Failed to clean up {action.GetType()}. It is possible that it was already cleaned up by parent objects.");
        }
    }
}

现在,我有一个大问题。 在我的持续集成环境(TeamCity)中,我们有一个单独的数据库进行测试,并且在每次测试运行后都会进行清理,但是在我的本地环境中,集成测试指向我的本地数据库。 现在,如果由于某种原因取消了测试运行,这将在我的本地数据库中留下大量垃圾数据,因为从不调用CleanupAllMockData()。

处理此问题的最佳方法是什么? 我找不到在MSTest中拦截测试取消的方法。

我看到两种解决您的问题的方法:

  1. 每次启动前都要清理模拟数据。 仅在开始之前。
  2. 每个测试都包装为一个db-transaction,它永远不会提交。 在这里解释这个选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM