O assertLength foi desenvolvido e funciona de forma intuitiva apenas para arrays. Para listas ele não é nem um pouco intuitivo, pois:
- Usar assertLength n, array equivale intuitivamente a assertEquals n, array.lenght ou ainda a assertEquals n, array.size(), ficando mais simples a escrita
- Usar assertLength 1, lista equivale a assertNotNull lista pois uma lista vazia, com 1 elemento, ou com mais elementos será sempre um array de tamanho 1
- Usar assertLength n, lista nunca irá deixar a execução passar pois uma lista vazia, com 1 elemento, ou com mais elementos será sempre um array de tamanho 1, e nunca um array de tamanho n diferente de 1
- Caso o desejado fosse algo equivalente a assertEquals n, lista.size() o uso correto seria assertLength n, lista.toArray() o que não é uma melhor escrita de código do que a utilização do assertEquals, podendo na verdade até ser considerada pior
Isto é, o assertLength pode ser intuitivo e sucinto para arrays, mas é anti-intuitivo e pode gerar erros no desenvolvimento quando utilizado para listas. E mesmo que utilizado na forma correta para listas, não é uma melhor escrita de código do que a utilização do assertEquals, podendo na verdade até ser considerada pior.
Posted by Bruno Vieira to ZeroGlosa (2012-10-04 18:52)