Во-первых, вам нужно будет добавить пакет Pomelo.EntityFrameworkCore.MySql
NuGet в ваши weblab2
и XUnitIntegrationTestWeblab2
проекты.
Затем вам нужно сослаться на ваш weblab2
проект из вашего XUnitIntegrationTestWeblab2
проекта.
Теперь ваш проект будет скомпилирован, но ваш тест все равно не пройден.
Наконец, вам необходимо настроить экземпляр ApplicationDbContext
перед его использованием. Я сделал это в виде очень простого примера для теста Application_DbContext_Should_Connect_To_MySql_Database
:
[Fact]
public void Application_DbContext_Should_Connect_To_MySql_Database()
{
// Arrange
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>()
.UseMySql("server=127.0.0.1;port=3306;user=root;password=;database=so59888273", builder => builder
.ServerVersion(new Version(8, 0, 18), ServerType.MySql));
ApplicationDbContext dbContext = new ApplicationDbContext(optionsBuilder.Options);
bool expected = true;
// Act
bool result = dbContext.Database.CanConnect();
// Assert
Assert.Equal(expected, result);
}
Вот патч, содержащий все изменения:
diff --git a/XUnitIntegrationTestWeblab2/UnitTest2.Pomelo.EntityFramework.Core.MySql.ApplicationDbContextTest.cs b/XUnitIntegrationTestWeblab2/UnitTest2.Pomelo.EntityFramework.Core.MySql.ApplicationDbContextTest.cs
index 2c60ea3..0b058a5 100644
--- a/XUnitIntegrationTestWeblab2/UnitTest2.Pomelo.EntityFramework.Core.MySql.ApplicationDbContextTest.cs
+++ b/XUnitIntegrationTestWeblab2/UnitTest2.Pomelo.EntityFramework.Core.MySql.ApplicationDbContextTest.cs
@@ -1,4 +1,6 @@
using System;
+using Microsoft.EntityFrameworkCore;
+using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
using weblab2.Data;
using Xunit;
@@ -6,18 +8,24 @@ namespace XUnitIntegrationTestWeblab2
{
public class UnitTest2_Pomelo_EntityFramework_Core_MySql_ApplicationDbContextTest
{
- [Fact]
- public void Application_DbContext_Should_Connect_To_MySql_Database()
- {
- // Arrange
- ApplicationDbContext DbContext = new ApplicationDbContext();
- bool expected = true;
- // Act
- bool result = DbContext.Database.CanConnect();
+[Fact]
+public void Application_DbContext_Should_Connect_To_MySql_Database()
+{
+ // Arrange
+ var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>()
+ .UseMySql("server=127.0.0.1;port=3306;user=root;password=;database=so59888273", builder => builder
+ .ServerVersion(new Version(8, 0, 18), ServerType.MySql));
- // Assert
- Assert.Equal(expected, result);
- }
+ ApplicationDbContext dbContext = new ApplicationDbContext(optionsBuilder.Options);
+ bool expected = true;
+
+ // Act
+ bool result = dbContext.Database.CanConnect();
+
+ // Assert
+ Assert.Equal(expected, result);
+}
+
[Fact]
public async void Application_DbContext_Should_Connect_To_MySql_Database_Async()
{
diff --git a/XUnitIntegrationTestWeblab2/XUnitIntegrationTestWeblab2.csproj b/XUnitIntegrationTestWeblab2/XUnitIntegrationTestWeblab2.csproj
index a2352e4..665815c 100644
--- a/XUnitIntegrationTestWeblab2/XUnitIntegrationTestWeblab2.csproj
+++ b/XUnitIntegrationTestWeblab2/XUnitIntegrationTestWeblab2.csproj
@@ -8,9 +8,14 @@
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
+ <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.1" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="coverlet.collector" Version="1.0.1" />
</ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\weblab2\weblab2.csproj" />
+ </ItemGroup>
+
</Project>
diff --git a/weblab2/weblab2.csproj b/weblab2/weblab2.csproj
index 0fcc948..6a736ad 100644
--- a/weblab2/weblab2.csproj
+++ b/weblab2/weblab2.csproj
@@ -4,6 +4,10 @@
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
+ <ItemGroup>
+ <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.1" />
+ </ItemGroup>
+
</Project>