2 개의 JUnit 어설트 클래스의 차이점


257

JUnit 프레임 워크에는 2 개의 Assert클래스 (다른 패키지로 제공)가 포함되어 있으며 각 클래스의 메소드는 매우 유사합니다. 아무도 이것이 왜 설명 할 수 있습니까?

내가 말하는 클래스는 다음 junit.framework.Assert과 같습니다 org.junit.Assert.


8
Intellij IDEA junit.framework.*에서의 정적 가져 오기 드롭 다운에서 제외 할 수 있습니다 Editor->General->Auto Import->Exclude from Import and Completion.
jordanpg

답변:


239

JUnit 3의 이전 방법은을 확장하여 테스트 클래스를 표시하는 것이 었습니다 junit.framework.TestCase. 그것은 상속 junit.framework.Assert되었고 테스트 클래스는 이런 방식으로 assert 메소드를 호출하는 능력을 얻었습니다.

JUnit의 버전 4부터 프레임 워크는 Annotations마킹 테스트에 사용 합니다. 따라서 더 이상 확장 할 필요가 없습니다 TestCase. 그러나 이것은 어설 션 방법을 사용할 수 없다는 것을 의미합니다. 그러나 새 Assert클래스를 정적으로 가져올 수 있습니다 . 그렇기 때문에 새 클래스의 모든 어설 션 메서드는 정적 메서드입니다. 따라서 다음과 같이 가져올 수 있습니다.

import static org.junit.Assert.*;

이 정적 가져 오기 후 접두사없이이 메소드를 사용할 수 있습니다.

재 설계시 org.junit패키지 이름 지정에 대한 일반적인 규칙을 따르는 새로운 패키지로 이동했습니다 .


6
이 답변은 전적으로 정확하지는 않습니다. junit.framework.Assert 및 org.junit.Assert 클래스에서 메소드의 정적 가져 오기를 수행 할 수 있습니다. 그러나 org.junit.Assert 클래스는 새로운 것이기 때문에 약간 새로 작성되었으며 대체 용으로 사용되기 때문에 org.junit.Assert 클래스를 사용하는 것이 좋습니다.
Glenn Bech

75

JUnit 3.X : junit.framework.Assert

JUnit 4.X : org.junit.Assert

특히 주석 지원으로 JDK5 이상을 실행하는 경우 최신 버전을 선호하십시오.


19

기능적인 변화는 사실에있다 : org.junit.Assert당신이 2 개의 인수를 사용하는 경우 불평 assertEquals()으로 float또는 double동시에, junit.framework.Assert자동으로 오토 박싱 할 것입니다.


5

나는 그들이 리팩토링 junit.framework하고 org.junit있고 junit.framework.Assert이전 버전과의 호환성을 위해 유지 된다고 생각 합니다.


3

대략적인 소스 코드 비교를 수행했으며 심각한 변경 사항은 없습니다. 많은 의견이 추가되었습니다org.junit.Assert 되었고 일부 리팩토링이 완료되었습니다. 유일한 변경 사항은와의 비교입니다 Arrays. 코드 정리가 있지만 기능 변경은 없습니다 .


1
@David Moles가 정확하다고 생각하며 이는 기능상의 변화 일 것입니다.
orbfish

1

Android Studio (및 IntelliJ에서도)에서 전 세계적으로 제외 할 수 있습니다 junit.framework 에서 자동 가져 오기 제안에서 .

IDE또는 사이의 범위를 설정할 수 있습니다Project . JUnit 3을 사용하는 프로젝트가없는 경우 안전하게 IDE 범위를 유지할 수 있습니다.

설정 위치 :

환경 설정-> 편집기-> 일반-> 자동 가져 오기

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.