xUnit测试执行不同的dbcontext设置。

问题描述 投票:0回答:1

我目前正在为一个.net核心应用程序编写xUnit测试。这是我在Startup中设置DbContext的方式。

            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection")));

现在我想让xUnit测试用SQLite来执行 这就要求我能够检测应用程序是否正常执行 或者测试是否在我的Startup类中执行 然后要根据这个情况来设置DbContext。

有什么方法可以做到这一点吗?我在网上查了很多资料,但一直没有找到好的解决办法。

c# asp.net .net startup xunit.net
1个回答
0
投票

想了解你想做什么。我不确定我是否明白,但我可以给一些提示。如果你想在单元测试中用EF测试数据库,你可以做以下工作。

创建一个上下文选项生成器对象,使用内存中的数据库

            var options = new DbContextOptionsBuilder<YourContext>()
                .UseInMemoryDatabase(databaseName: "TestingDb")
                .Options; 

使用此选项对象创建一个上下文

            var context = new YourContext(options);

并使用上述上下文创建一个存储库。


            _repository= new YourRepository(context);

现在使用这个新的存储库,你将有一个合适的内存数据库用于你的测试。使用DbContextOptionsBuilder,你可以按照你的意愿改变目标数据库。希望我的回答对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.