2014-02-03 4 views
0

Я успешно создал проект модульного тестирования для моего приложения на основе 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.

Любая помощь действительно оценена.

Спасибо заранее,

Антонелло

ответ

1

Pathing проблемы с sqlite3.dll просто указать, что вы должны ссылаться на эту бинарного с вашего C# проекта. Один из способов сделать это - включить DLL со строкой «none», но указать «всегда копировать на вывод» в dll. Помните, однако, что вам могут понадобиться отдельные 32 и 64-разрядные DLL в зависимости от целевой машины.

Для получения дополнительной информации об этих типах вопросов, возможно, стоит попросить более общие «уместные» вопросы - есть много людей, которые могут помочь с ними, но они могут быть «отложены»/запутаны слишком много разговоров о MVVM и SQLite :)


После того, что проблема Pathing решена, я не вижу никаких причин, почему SQLite плагин не должен работать. Я предлагаю вам попробовать тест следующее: блок

  • создать БД
  • создать таблицу
  • добавить строку
  • выбрать строку

Что-то вроде (простите за мобильный телефон телефонная кодировка - кодирование из памяти без intellisense):

[TestMethod] 
public void MyTest() 
{ 
    // your setup stuff 
    var c = factory.Create("Test.db"); 
    c.CreateTable<Foo>(); 
    c.Insert(new Foo(){ Bar = 1234 }); 
    var result = c.Table<Foo>().ToList(); 
    Assert.AreEqual(1234, result[0].Bar); 
} 

Если это работает, то работает sqlite (по крайней мере, до версии для тестирования дыма).

+0

Спасибо за помощь, теперь все в порядке. Дальнейшее чтение этим утром позволило мне лучше понять зависимости плагина SQLite.Ошибка доступа к таблице была вызвана ошибкой, которую я продолжаю делать при использовании SQLite: поместите инициализированный файл db в один каталог и откройте его с помощью кода в другом. SQLite не жалуется на отсутствие БД ... он просто создает пустую ... –

Смежные вопросы