Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 数据访问集成测试…您是如何做到的?_.net_Testing_Tdd_Continuous Integration_Integration - Fatal编程技术网

.net 数据访问集成测试…您是如何做到的?

.net 数据访问集成测试…您是如何做到的?,.net,testing,tdd,continuous-integration,integration,.net,Testing,Tdd,Continuous Integration,Integration,我可以看出,您正在事务中进行战术测试,以便在测试后回滚 我个人从头开始,为测试创建表,然后删除它们。另一种常见的技术是将数据库恢复到已知状态——尽管我认为这表明如果测试依赖于数据库中的大量状态,那么测试范围太广 我是为PHP写这篇文章的,但我更经常在.NET中工作 问题是什么?如何测试上面的代码?你能提供一些你想要实现的细节吗?你能给我们一些更多的信息吗。你的问题太夸张了。查看有关如何提出好问题的提示。这会增加你得到答案的机会。 public class RollBack : OnMethodB

我可以看出,您正在事务中进行战术测试,以便在测试后回滚

我个人从头开始,为测试创建表,然后删除它们。另一种常见的技术是将数据库恢复到已知状态——尽管我认为这表明如果测试依赖于数据库中的大量状态,那么测试范围太广

我是为PHP写这篇文章的,但我更经常在.NET中工作


问题是什么?如何测试上面的代码?你能提供一些你想要实现的细节吗?你能给我们一些更多的信息吗。你的问题太夸张了。查看有关如何提出好问题的提示。这会增加你得到答案的机会。
public class RollBack : OnMethodBoundaryAspect // or another AOP for meth interception
{
    public override void OnEntry(MethodExecutionEventArgs eventArgs)
    {
        try
        {
            ServiceConfig cfg = new ServiceConfig();
            cfg.Transaction = TransactionOption.RequiresNew;
            cfg.TrackingAppName = "Application Unit Tests";
            cfg.TransactionDescription = "Application Unit Tests Transaction";
            cfg.TransactionTimeout = 0x2710;
            ServiceDomain.Enter(cfg);
        }
        catch (Exception exception)
        {
            Console.WriteLine("Could not enter into a new transaction:\n" + exception);
        }
    }

    public override void OnExit(MethodExecutionEventArgs eventArgs)
    {
        try
        {
            if (ContextUtil.IsInTransaction)
            {
                ContextUtil.SetAbort();
            }
            ServiceDomain.Leave();
        }
        catch (Exception exception)
        {
            Console.WriteLine("Could not leave an existing transaction:\n" + exception);
        }
    }
}