1
resposta

Test unit, como verificar se um drawable foi setado

Galera, creiei um fun extension, que recebe um parametro, depedendo do valor ele irá setar uma cor e icone, meus testes ficaram assim:\

Quando executo o test quebra no setup, na linha onde inicializo a imageView.

Estou em duvida também se a forma como estou avaliando o drawable está correto.

assertThat(imageView.drawable, equalTo(ContextCompat.getDrawable(context, R.drawable.ic_arrow_downward_black_16dp)))

class AppCompatImageViewExtensionTest {
    private lateinit var context: Context
    private lateinit var imageView: AppCompatImageView
    
    @Before
    fun setup() {
        context = ApplicationProvider.getApplicationContext<Context>()
        imageView = AppCompatImageView(context)
    }
    
    @Test
    @SmallTest
    fun `test setIcon extension function with value containing "-"`() {
        val value = "example-1"
        
        imageView.setIcon(value, context)
        
        assertThat(imageView.drawable, equalTo(ContextCompat.getDrawable(context, R.drawable.ic_arrow_downward_black_16dp)))
        assertThat(imageView.imageTintList?.defaultColor, equalTo(ContextCompat.getColor(context, R.color.orangeDark)))
    }
    
    @Test
    @SmallTest
    fun `test setIcon extension function with value not containing "-"`() {
        val value = "example"
        
        imageView.setIcon(value, context)
        
        assertThat(imageView.drawable, equalTo(ContextCompat.getDrawable(context, R.drawable.ic_arrow_upward_black_16dp)))
        assertThat(imageView.imageTintList?.defaultColor, equalTo(ContextCompat.getColor(context, R.color.greenCitricDarkest)))
    }
}
1 resposta

Olá, Thailan! Tudo bem?

Pelo que entendi, você está enfrentando um problema ao executar o teste em que você inicializa a imageView. É importante verificar se você está fornecendo o contexto corretamente para a criação da imageView no método setup(). Certifique-se de que o contexto está sendo obtido corretamente através do ApplicationProvider.getApplicationContext<Context>().

Além disso, em relação à forma como você está avaliando o drawable, parece estar correta. Você está utilizando o assertThat para verificar se o drawable é igual ao drawable esperado, utilizando o método ContextCompat.getDrawable(context, R.drawable.ic_arrow_downward_black_16dp). Certifique-se de que o drawable que você está esperando é o mesmo que está sendo setado na imageView.

Caso o problema persista, pode ser útil verificar se o drawable está sendo carregado corretamente na imageView. Você pode adicionar um log para verificar o valor do drawable antes do teste, utilizando Log.d("Drawable", imageView.drawable.toString()). Assim, você poderá verificar se o drawable está sendo setado corretamente.

Espero ter ajudado e bons estudos!