Я успешно создал проект модульного тестирования для моего приложения на основе MVVMcross, следуя инструкциям, приведенным на шаге 29 учебных руководств MVVMCross N + 1, издеваясь над службой, фактически используемой для загрузки данных из базы данных.MVVMCross SQLite plugin Тестирование интеграции
Теперь мне нужно реализовать некоторые тесты интеграции моих моделей просмотра, используя копию фактической базы данных.
то, что я поставил на место в моем тестовом классе следующее:
[TestFixture]
public class BaseDataServiceTests
: MvxIoCSupportingTest {
[TestFixtureSetUp]
public void ConfigureServices() {
base.ClearAll();
var sqLiteConnectionFactory = new MvxWpfSqLiteConnectionFactory();
Ioc.RegisterSingleton<ISQLiteConnectionFactory>(sqLiteConnectionFactory);
}
[Test]
public void OpenDataBase() {
//=== Arrange
var baseDataService = new BaseDataService(Ioc.Resolve<ISQLiteConnectionFactory>());
//=== Act
var sqLiteConnection = baseDataService.SqLiteConnection;
//=== Assert
Assert.IsInstanceOf<ISQLiteConnection>(sqLiteConnection);
}
[Test]
[SetUICulture("en-US")]
public void GetEnglishExcelentTranslation() {
//=== Arrange
const int excelentID = 10;
var baseDataService = new BaseDataService(Ioc.Resolve<ISQLiteConnectionFactory>());
//=== Act
var excelentString = baseDataService.GetLocalizedString(excelentID);
//=== Assert
Assert.AreEqual("Excelent", excelentString);
}
}
Если я просто запустить эти испытания они были неудачны конструктору baseDataService, где я использую метод Create в SqLiteConnectionFactory для openn базы данных файл с исключением, указывающим, что невозможно загрузить sqlite3 dll.
Если я вручную разместил sqlite3.dll в каталоге bin тестового проекта (как было предложено другое сообщение на этом сайте), тест не прошел в методе GetLocalizedString, указав, что ссылочная таблица не найдена в базе данных, даже если таблица создается и заполняется данными.
У меня такое чувство, что я пропускаю что-то в старте SqLitePlugin, но не могу понять, как его инициализировать в тестовом проекте.
Испытательный проект представляет собой стандартную библиотеку Windows, ссылающуюся на библиотеки MVVMCross через NuGet и MVVMCross плагин сообщества SQLite.
Любая помощь действительно оценена.
Спасибо заранее,
Антонелло
Спасибо за помощь, теперь все в порядке. Дальнейшее чтение этим утром позволило мне лучше понять зависимости плагина SQLite.Ошибка доступа к таблице была вызвана ошибкой, которую я продолжаю делать при использовании SQLite: поместите инициализированный файл db в один каталог и откройте его с помощью кода в другом. SQLite не жалуется на отсутствие БД ... он просто создает пустую ... –