diff --git a/AdoNetApiTest.sln b/AdoNetApiTest.sln
index b0b9090..419caa2 100644
--- a/AdoNetApiTest.sln
+++ b/AdoNetApiTest.sln
@@ -51,6 +51,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MicrosoftSqlite7.Tests", "t
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Npgsql7.Tests", "tests\Npgsql7.Tests\Npgsql7.Tests.csproj", "{2DEADF63-7268-41E8-BFB5-F28DD8F9AEAC}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MicrosoftSqlite8.Tests", "tests\MicrosoftSqlite8.Tests\MicrosoftSqlite8.Tests.csproj", "{FA8BDF08-7841-4F8D-9085-D1EFC2A46A7E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -153,6 +155,10 @@ Global
{2DEADF63-7268-41E8-BFB5-F28DD8F9AEAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2DEADF63-7268-41E8-BFB5-F28DD8F9AEAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2DEADF63-7268-41E8-BFB5-F28DD8F9AEAC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FA8BDF08-7841-4F8D-9085-D1EFC2A46A7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FA8BDF08-7841-4F8D-9085-D1EFC2A46A7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FA8BDF08-7841-4F8D-9085-D1EFC2A46A7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FA8BDF08-7841-4F8D-9085-D1EFC2A46A7E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 322637a..90ce683 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -172,6 +172,13 @@ jobs:
publishTestResults: false
arguments: '--logger "trx;LogFileName=$(Build.ArtifactStagingDirectory)/MicrosoftSqlite7.Tests.trx"'
continueOnError: true
+ - task: DotNetCoreCLI@2
+ inputs:
+ command: 'test'
+ workingDirectory: tests/MicrosoftSqlite8.Tests
+ publishTestResults: false
+ arguments: '--logger "trx;LogFileName=$(Build.ArtifactStagingDirectory)/MicrosoftSqlite8.Tests.trx"'
+ continueOnError: true
- task: DotNetCoreCLI@2
inputs:
command: 'test'
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8.Tests.csproj b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8.Tests.csproj
new file mode 100644
index 0000000..f369ffb
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8.Tests.csproj
@@ -0,0 +1,16 @@
+
+
+
+ net8.0
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8CommandTests.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8CommandTests.cs
new file mode 100644
index 0000000..30f07b0
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8CommandTests.cs
@@ -0,0 +1,8 @@
+using AdoNet.Specification.Tests;
+
+namespace MicrosoftSqlite8.Tests;
+
+public sealed class MicrosoftSqlite8CommandTests(MicrosoftSqlite8DbFactoryFixture fixture)
+ : CommandTestBase(fixture)
+{
+}
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8ConnectionStringBuilderTests.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8ConnectionStringBuilderTests.cs
new file mode 100644
index 0000000..8fddf2a
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8ConnectionStringBuilderTests.cs
@@ -0,0 +1,9 @@
+using AdoNet.Specification.Tests;
+
+namespace MicrosoftSqlite8.Tests;
+
+public sealed class MicrosoftSqlite8ConnectionStringBuilderTests(MicrosoftSqlite8DbFactoryFixture fixture)
+ : ConnectionStringTestBase(fixture)
+{
+}
+
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8ConnectionTests.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8ConnectionTests.cs
new file mode 100644
index 0000000..2139656
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8ConnectionTests.cs
@@ -0,0 +1,8 @@
+using AdoNet.Specification.Tests;
+
+namespace MicrosoftSqlite8.Tests;
+
+public sealed class MicrosoftSqlite8ConnectionTests(MicrosoftSqlite8DbFactoryFixture fixture)
+ : ConnectionTestBase(fixture)
+{
+}
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8DataReaderTests.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8DataReaderTests.cs
new file mode 100644
index 0000000..3b50c70
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8DataReaderTests.cs
@@ -0,0 +1,8 @@
+using AdoNet.Specification.Tests;
+
+namespace MicrosoftSqlite8.Tests;
+
+public sealed class MicrosoftSqlite8DataReaderTests(MicrosoftSqlite8SelectValueFixture fixture)
+ : DataReaderTestBase(fixture)
+{
+}
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8DbFactoryFixture.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8DbFactoryFixture.cs
new file mode 100644
index 0000000..1066b3a
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8DbFactoryFixture.cs
@@ -0,0 +1,11 @@
+using System.Data.Common;
+using AdoNet.Specification.Tests;
+using Microsoft.Data.Sqlite;
+
+namespace MicrosoftSqlite8.Tests;
+
+public class MicrosoftSqlite8DbFactoryFixture : IDbFactoryFixture
+{
+ public DbProviderFactory Factory => SqliteFactory.Instance;
+ public string ConnectionString => "data source=temp.db";
+}
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8DbProviderFactoryTests.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8DbProviderFactoryTests.cs
new file mode 100644
index 0000000..fc16aca
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8DbProviderFactoryTests.cs
@@ -0,0 +1,8 @@
+using AdoNet.Specification.Tests;
+
+namespace MicrosoftSqlite8.Tests;
+
+public sealed class MicrosoftSqlite8DbProviderFactoryTests(MicrosoftSqlite8DbFactoryFixture fixture)
+ : DbProviderFactoryTestBase(fixture)
+{
+}
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8GetValueConversionTests.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8GetValueConversionTests.cs
new file mode 100644
index 0000000..4ec7b69
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8GetValueConversionTests.cs
@@ -0,0 +1,8 @@
+using AdoNet.Specification.Tests;
+
+namespace MicrosoftSqlite8.Tests;
+
+public class MicrosoftSqlite8GetValueConversionTests(MicrosoftSqlite8SelectValueFixture fixture)
+ : GetValueConversionTestBase(fixture)
+{
+}
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8ParameterTests.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8ParameterTests.cs
new file mode 100644
index 0000000..99a6af0
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8ParameterTests.cs
@@ -0,0 +1,8 @@
+using AdoNet.Specification.Tests;
+
+namespace MicrosoftSqlite8.Tests;
+
+public sealed class MicrosoftSqlite8ParameterTests(MicrosoftSqlite8DbFactoryFixture fixture)
+ : ParameterTestBase(fixture)
+{
+}
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8SelectValueFixture.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8SelectValueFixture.cs
new file mode 100644
index 0000000..489f510
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8SelectValueFixture.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using AdoNet.Databases;
+using AdoNet.Specification.Tests;
+
+namespace MicrosoftSqlite8.Tests;
+
+public class MicrosoftSqlite8SelectValueFixture : MicrosoftSqlite8DbFactoryFixture, ISelectValueFixture, IDeleteFixture, IDisposable
+{
+ public MicrosoftSqlite8SelectValueFixture() => SqliteDatabase.CreateSelectValueTable(this);
+ public void Dispose() => SqliteDatabase.DropSelectValueTable(this);
+ public string CreateSelectSql(DbType dbType, ValueKind kind) => SqliteDatabase.CreateSelectSql(dbType, kind);
+ public string CreateSelectSql(byte[] value) => SqliteDatabase.CreateSelectSql(value);
+ public string SelectNoRows => SqliteDatabase.SelectNoRows;
+ public IReadOnlyCollection SupportedDbTypes => SqliteDatabase.SupportedDbTypes;
+ public Type NullValueExceptionType => SqliteDatabase.NullValueExceptionType;
+ public string DeleteNoRows => SqliteDatabase.DeleteNoRows;
+}
diff --git a/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8TransactionTests.cs b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8TransactionTests.cs
new file mode 100644
index 0000000..305acfc
--- /dev/null
+++ b/tests/MicrosoftSqlite8.Tests/MicrosoftSqlite8TransactionTests.cs
@@ -0,0 +1,8 @@
+using AdoNet.Specification.Tests;
+
+namespace MicrosoftSqlite8.Tests;
+
+public sealed class MicrosoftSqlite8TransactionTests(MicrosoftSqlite8DbFactoryFixture fixture)
+ : TransactionTestBase(fixture)
+{
+}