Проверьте Oracle SQL-запрос с открытым исходным кодом в базе данных памяти - PullRequest
1 голос
/ 06 июня 2019

Я использую NUnit в качестве основы тестирования и хочу протестировать оракул-запрос на конкретных данных тестирования.Я хочу получить зависимость от nuget и запустить базу данных в памяти, чтобы проверить мой запрос.Я предполагаю, что мой запрос совместим с sql, так что я думаю, что мне не нужно тестировать непосредственно на oracle.

Мой поиск до сих пор привел к этой записи вики , где, похоже, нет подходящего вбазы данных памяти.

Я также обнаружил, что «Microsoft.EntityFrameworkCore.InMemory» может использоваться для определенных сценариев, и я думаю, что мой не является одним из них.

Чтобы дать некоторый контекст - вотТестовая реализация, которая пропустит базу данных.

using NUnit.Framework;
using System.Linq;
using System.Collections.Generic;

[TestFixture]
public class ExampleFixture
{
    public class JobData { public string Name { get; set; } }
    public string queryUnderTest = "select j.name, j.updated from T_JOB j where j.name like '%TEST%'";

    [Test]
    public void TestQuery()
    {
        var expected = new[] { new JobData { Name = "-TEST-" } };
        var Data = expected.Concat(new[] { new JobData { Name = "OTHER" } });

        var dataBase = MakeInMemoryDataBase();
        WriteTable(dataBase, "T_JOB", Data);

        var actual = QueryAndMakeJobs(dataBase, queryUnderTest);

        CollectionAssert.AreEquivalent(expected, actual);
    }

    private IEnumerable<JobData> QueryAndMakeJobs(object dataBase, string queryUnderTest) => Enumerable.Empty<JobData>();
    private void WriteTable(object imdb, string tablename, IEnumerable<JobData> data) {}
    private object MakeInMemoryDataBase() => null;
}

Я ограничен зависимостями с открытым исходным кодом, которые я могу извлечь из nuget.org.Мой единственный вариант - запустить базу данных с открытым исходным кодом на hub.docker.com.

1 Ответ

2 голосов
/ 06 июня 2019

Честно говоря, это бесполезно в качестве теста unit ; это интеграция тест, так как он требует соответствующего сервера. Тестирование его с использованием совершенно другой реализации в памяти - - бесполезный тест - оно ничего не говорит о том, будет ли оно работать на самом деле, если только вы не используете эту реализацию в памяти для реального сценария в вашем сценарии. приложение. Реализации СУБД очень обидчивы.

IMO, вам следует сосредоточиться на получении соответствующей фактической СУБД, работающей в вашей тестовой среде каким-либо воспроизводимым способом.

...