1. 소개

AssertJ 는 Java에 대한 유창한 어설션을 제공하는 라이브러리입니다. 여기여기 에서 자세한 내용을 읽을 수 있습니다 .

최근에 3.6.0 버전이 두 개의 작은 버그 수정 릴리스인 3.6.1 및 3.6.2와 함께 릴리스되었습니다.

오늘 라이브러리의 제작자인 Joel Costigliola가 우리와 함께하며 릴리스 및 향후 계획에 대해 조금 더 알려줄 것입니다.

"우리는 AssertJ를 진정으로 커뮤니티 지향적으로 만들기 위해 노력하고 있습니다. "

2. 버전 2.6.0과 3.6.0은 거의 동시에 출시되었습니다. 그들 사이의 차이점은 무엇입니까?

2.x 버전은 Java 7을 대상으로 하고 3.x는 Java 8을 대상으로 합니다. 이것을 보는 또 다른 방법은 3.x = 2.x + Java 8 특정 기능입니다.

3. 3.6.0/2.6.0에서 가장 주목할만한 변경/추가 사항은 무엇입니까?

2.6.0은 다른 작은 기능을 갖게 되었지만 큰 추가 사항은 없었습니다. 선택해야 하는 경우 가장 흥미로운 것은 억제된 예외와 관련된 것입니다.
hasSuppresedException()
hasNoSuppresedExceptions()

3.6.0에는 array/iterable/map 항목 요소에 대한 다중 어설션을 확인하는 방법이 추가되었습니다.

4. 3.6.0 릴리스 이후 두 개의 버그 수정 릴리스(3.6.1, 3.6.2)가 나타났습니다. 그곳에서 무슨 일이 일어났고 무엇을 고쳐야 하는지 조금 더 말씀해 주시겠습니까?

3.6.1에서 FilteredOn(Predicate)은 List 에서만 작동했지만 Iterable 에서는 작동 하지 않았습니다 . 꽤 나빴습니다.

3.6.2에서는 Java 8 기본 getter 메서드에서 속성을 추출하는 것을 생각하지 않았습니다. 일부 내부 리팩토링 후에는 기본적으로 작동하지 않는 것으로 나타났습니다.

사용자들에게 다음 릴리스를 기다려도 되는지 물었고, 버그 리포터는 기다려도 된다고 했지만 다른 사용자가 원해서 새 버전을 릴리스했습니다. 우리는 AssertJ를 정말 커뮤니티 지향적으로 만들려고 노력하고 있습니다 . 릴리스를 줄이는 것이 저렴하기 때문에(문서 부분을 제외하고) 일반적으로 릴리스에 문제가 없다고 생각합니다.

5. 최신 릴리스에서 작업할 때 흥미로운 기술적 문제에 직면했습니까?

몇 주 후에 나올 다음 릴리스 3.7.0에서 작업하면서 발생한 문제를 지적하겠습니다.

Java 8은 "모호한" 메서드 서명에 까다롭습니다. ThrowingCallable (예외를 던지는 Callable 인 간단한 클래스 ) 을 사용하는 새로운 assertThat 메서드를 추가했는데 , Java 8이 Iterable을 사용하는 다른 assertThat 메서드 와 혼동하는 것으로 나타났습니다 !

둘 사이에 어떤 모호성도 보이지 않았기 때문에 그것은 나에게 가장 놀라운 일이었습니다.

6. 곧 새로운 주요 릴리스를 계획하고 있습니까? Java 9 추가 기능을 활용하는 것이 있습니까?

다음 주/한 달 안에. 일반적으로 몇 달에 한 번씩 또는 주요 추가 사항이 있을 때 릴리스하려고 합니다.

AssertJ 팀에 합류한 Pascal Schumacher는 호환성을 확인하기 위해 Java 9에서 몇 가지 작업을 수행했습니다. 몇 가지 작업이 작동하지 않습니다. 주로 Java 9가 액세스 규칙을 변경하기 때문에 내성에 의존하는 작업입니다. 우리가 할 일은 Java 9에 초점을 맞춘 4.x 분기를 시작하는 것입니다. 3.x VS 2.x와 동일한 전략에 따라 4.x = 3.x + Java 9 기능을 갖게 됩니다.

4.0이 공식적으로 출시되면 2.x 활성 개발을 중단할 가능성이 높지만 3개 버전을 동기화할 수 있는 용량이 없으므로 PR을 계속 수락합니다. 즉, nx 버전에서 n+1.x로의 변경 사항을 보고합니다. 따라서 2.x에 무언가를 추가하려면 3.x와 4.x 모두에서 보고해야 하며 현재로서는 너무 많은 작업입니다.

Junit footer banner