У меня есть Xamarin
тестовое приложение для Android, настроенное с помощью Xunit
и отдельный класс, содержащий модульные тесты для тестирования специфических функций Android.
MainActivity
моего тестового приложения выглядит как
[Activity(Label = "xUnit Android Runner", MainLauncher = true, Theme = "@android:style/Theme.Material.Light")]
public class MainActivity : RunnerActivity
{
protected override void OnCreate(Bundle bundle)
{
AddTestAssembly(typeof(Android_Platform_Tests.MainActivityTests).Assembly);
AutoStart = true;
base.OnCreate(bundle);
}
}
Тест в моем классе MainActivityTests
в настоящее время выглядит следующим образом:
[Fact]
public void mainActivity_ExitsEarlyIfRequiredPermissionsNotSet()
{
ApplicationPermissions appPermissions = new ApplicationPermissions(context);
Assert.True(appPermissions.hasPermissionToUseMicrophone);
}
И класс разрешений приложения будет использовать контекст для проверки разрешений, выполняя что-то вроде этого:
public class ApplicationPermissions
{
public bool hasPermissionToUseMicrophone;
public ApplicationPermissions(Context context)
{
CheckForMicrophoneUsePermission(context)
}
public void CheckForMicrophoneUsePermission(Context context)
{
if(ContextCompat.CheckSelfPermission(context, Manifest.Permission.RecordAudio) != Permission.Granted)
{
hasPermissionToUseMicrophone = false;
}
}
}
У меня вопрос: как я могу передать контекст вызывающей активности в модульный тест, чтобы я мог передать его в свои функции? Это правильный подход, или есть другой способ, которым я должен это делать?