[NEWS] AssertJ 3.6.X - Entrevista com Joel Costigliola

[NEWS] AssertJ 3.6.X - Entrevista com Joel Costigliola

1. Introdução

AssertJ é uma biblioteca que fornece asserções fluentes para Java. Você pode ler mais sobre issohereehere.

Recentemente, a versão 3.6.0 foi lançada juntamente com duas pequenas versões de correção de erros 3.6.1 e 3.6.2.

Hoje,Joel Costigliola - o criador da biblioteca - está conosco e vai falar um pouco mais sobre o lançamento e planos futuros.

“Estamos tentando tornarAssertJ realmente voltado para a comunidade”

2. As versões 2.6.0 e 3.6.0 foram lançadas praticamente ao mesmo tempo. Qual a diferença entre eles?

2.x versions target Java 7 while 3.x target Java 8. Outra maneira de ver isso é que 3.x = 2.x + recursos específicos do Java 8.

3. Quais são as alterações / adições mais notáveis ​​que apareceram em 3.6.0 / 2.6.0?

2.6.0 ended up having different small features but no big additions. Se eu tivesse que escolher, os mais interessantes seriam aqueles relacionados às exceções suprimidas: -hasSuppresedException() -hasNoSuppresedExceptions()

3.6.0 additionally got a way of checking multiples assertions on array/iterable/map entry elements:

4. Desde o lançamento do 3.6.0, duas versões de correções de bugs apareceram (3.6.1, 3.6.2). Você pode nos contar um pouco mais o que aconteceu lá e o que precisava ser consertado?

Em 3.6.1,filteredOn(Predicate) estava trabalhando apenas comList, mas nãoIterable, muito ruim.

Na 3.6.2, não pensamos em extrair propriedades do método getter padrão do Java 8, mas não funcionou imediatamente após uma refatoração interna.

Perguntei aos usuários se eles poderiam esperar pelo próximo lançamento, o repórter de bugs me disse que ele estava bem em esperar, mas outro usuário queria, então eu lancei uma nova versão. We are trying to make AssertJ really community-oriented, uma vez que cortar uma versão é barato (bem, exceto a parte da documentação), eu geralmente não vejo nenhum problema em lançar.

5. Você encontrou algum desafio técnico interessante ao trabalhar na versão mais recente?

Vou apontar um problema que encontrei ao trabalhar na próxima versão 3.7.0, que deve sair em algumas semanas.

O Java 8 é exigente quanto a assinaturas de método "ambíguas". Adicionamos um novo método assertThat que leva umThrowingCallable (uma classe simples que é umCallable lançando uma exceção), descobriu-se que Java 8 o confunde com outro métodoassertThat que leva um Iterable!

Isso foi o mais surpreendente para mim, pois não vejo qualquer ambiguidade entre os dois.

6. Você está planejando algum novo lançamento importante em breve? Qualquer coisa que utilizará adições do Java 9?

Nas próximas semanas / um mês. We usually try to have releases every few months or when there are major additions.

Pascal Schumacher que se juntou à equipe AssertJ fez alguns trabalhos no Java 9 para verificar a compatibilidade, algumas coisas não funcionam, principalmente as que dependem de introspecção, já que o Java 9 muda as regras de acesso. O que faremos é iniciar uma ramificação 4.x que será focada no Java 9, seguindo a mesma estratégia que 3.x vs 2.x, teremos 4.x = 3.x + recursos Java 9.

Once 4.0 is officially released we will likely drop 2.x active development mas continuo aceitando PRs porque não temos a capacidade de manter 3 versões em sincronia, quero dizer com isso relatamos quaisquer alterações da versão nx para a versão n + 1.x, adicionando algo na versão 2.x precisaria ser relatado em 3.xe 4.xe isso é muito trabalhoso no momento.