На Песце не зарегистрировано никаких приборов

#unit-testing #junit #robolectric #android-studio-arctic-fox

Вопрос:

После обновления до Android Studio Arctic Fox v2020.3.1 я больше не могу извлекать контекст для модульного тестирования ApplicationProvider.getApplicationContext() . Кроме того, шаблоны тоже больше не работают.

Раньше я использовал Robolectric runner, @RunWith(RobolectricTestRunner::class) . После обновления Arctic Fox я получаю следующую ошибку:

Никаких исполняемых методов. Никаких приборов не зарегистрировано! Должен работать под регистрирующим оборудованием.

У меня есть модульный тест для проверки структуры URL-адресов.

 @RunWith(RobolectricTestRunner::class) class UrlValidatorTest {   private lateinit var urlConfiguration: UrlConfiguration   @BeforeEach  fun setup() {  context = ApplicationProvider.getApplicationContext()   val config = Configuration.Builder()  // Use a SynchronousExecutor here to make it easier to write tests  .setExecutor(SynchronousExecutor())  .build()   // initialize WorkManager for instrumentation tests.  WorkManagerTestInitHelper.initializeTestWorkManager(context, config)   // initialize UrlConfiguration  urlConfiguration = UrlConfiguration.Builder()  .create()  }   private fun isUrlValid(url: String): Boolean {  val urlParts: Listlt;Stringgt; = url.split("//")  // confirm url structure  val isUrlStructureValid = urlParts.size lt; 3 amp;amp;  (urlParts[0].equals("http:", ignoreCase = true) ||  urlParts[0].equals("https:", ignoreCase = true))   return isUrlStructureValid amp;amp; Patterns.WEB_URL.matcher(  url.lowercase(Locale.getDefault())  ).matches()  }   @Test  fun validateAllRequestUrls_ReturnsTrue() {  assertTrue(isUrlValid(urlConfiguration.trackExceptionUrl))  assertTrue(isUrlValid(urlConfiguration.signinUrl))  assertTrue(isUrlValid(urlConfiguration.signupUrl))  assertTrue(isUrlValid(urlConfiguration.trackNavigationFailure))  assertTrue(isUrlValid(urlConfiguration.trackNavigationSuccess))  } }  

Раньше этот тест работал просто отлично. После обновлений Arctic Fox почти все мои модульные тесты начали давать сбои.

Вот мои зависимости:

 testImplementation 'org.robolectric:robolectric:4.6.1'  def junit = '1.1.3' implementation "androidx.test.ext:junit-ktx:$junit" androidTestImplementation "androidx.test.ext:junit:$junit" androidTestImplementation 'androidx.test:core:1.4.0'   def jupiter = '5.8.1' testImplementation "org.junit.jupiter:junit-jupiter-api:$jupiter" testImplementation "org.junit.jupiter:junit-jupiter-engine:$jupiter" testImplementation "org.junit.vintage:junit-vintage-engine:$jupiter"   def mokito = '4.0.0' testImplementation "org.mockito:mockito-core:$mokito" testImplementation "org.mockito:mockito-inline:$mokito"  

Комментарии:

1. Никто так и не пришел к ответу. Единственное решение, которое у меня есть, — это не использовать jupiter и продолжить использовать стандартный junit.