2017-02-17 17 views
0

Я создал приложение с Xamarin.Forms, которое использует realm для хранения информации.Xamarin UI/Unit Tests with Realm

Я хотел написать несколько тестов, чтобы проверить, что функция выхода из системы в моем приложении работает правильно, а область пуста данных.

В отдельном решении я установил пакеты Realm 0.82.1 и создал ссылки на решение PCL для ссылки на модели, чтобы начать тестирование.

При изменении модели возникает исключение, как требуется миграция:

public static class RealmHelper { 
    public static Realm GetInstance() { 
     var config = new RealmConfiguration(Constants.REALM_FILE); 
     try { 
      return Realm.GetInstance(config); 
     } catch (Exception e) { 
      Debug.WriteLine(e.Message); 
      Realm.DeleteRealm(config); // Error Thrown here 
      return Realm.GetInstance(config); 
     } 
    } 
} 

Однако эта ошибка возникает

System.PlatformNotSupportedException: ЗКС сборка Realm в настоящее время связаны, которые, вероятно, означает, что вам нужно использовать NuGet или иным образом связать с Realm.dll платформой для вашего основного приложения.

Мой тест

[Test] 
public void CanInitDB() { 
    Assert.DoesNotThrow(() => 
    { 
     new DataAccessController(); 
    }); 
} 

Мой контроллер

public class DataAccessController { 
    static Realm realm; 

    public DataAccessController() { 
     realm = RealmHelper.GetInstance(); 
    } 

    //... 
} 
+0

https://github.com/realm/realm-dotnet/issues/1059 – SushiHangover

ответ

0

Realm не поддерживает использование версии PCL без конкретной платформы собрата. Что вы можете сделать, это использовать Xamarin's built-in test runners, который будет создавать приложение, которое можно использовать для выполнения тестов на устройстве/симуляторе. Это немного неудобно, но нужно выполнить свою работу.

+0

Я действительно последовал этому руководству, чтобы настроить мои тесты. Тем не менее, я все еще получаю ошибки: 'Ожидаемый: нет исключений, которые должны быть сброшены Но было: (Строка сборки PCL в Realm связана, что, вероятно, означает, что вам нужно использовать NuGet или иным образом связать платформу Realm.dll для платформы ваше основное приложение.) ' Как связать конкретную платформу dll в наборе тестов? – Harry

+0

Вам необходимо обратиться к редактору Realm nuget из проекта тестового бегуна. –