Junit 인터뷰 질문 및 답변 [초보자 및 경험자용]
게시 됨: 2020-09-22JUnit은 Java 프로그래밍 언어로 작업하는 개발자를 위한 탁월한 솔루션입니다. 단위 테스트 및 UI 테스트를 구현하는 데 사용할 수 있습니다. 코드 품질과 프로그래밍 속도를 향상시키려는 조직에서 가장 많이 찾는 역량 중 하나입니다. 이 기사는 당신이 준비하고 후보자 명단에 오르는 데 도움이 되는 표준 JUnit 인터뷰 질문에 대해 논의할 것입니다!
상위 15 JUnit 인터뷰 질문 및 답변
1. JUnit이란 무엇입니까?
JUnit은 Java 코드의 단위 테스트를 수행하는 데 사용되는 프레임워크입니다. JVM 엔진에 대한 개발자 측 테스트의 기초로 간주됩니다. 따라서 JUnit은 프로그래밍 분야와 테스트 주도 개발의 필수적인 부분입니다.
2. 테스팅과 유닛 테스팅으로 무엇을 이해하는가?
테스트는 애플리케이션이 요구 사항을 충족하고 원하는 기능을 달성하는지 확인하는 프로세스입니다. 단위 테스트는 응용 프로그램의 개별 기능 또는 단위를 평가하는 것을 말합니다.
3. 수동 테스트와 자동 테스트를 구분합니다.

수동 테스트는 테스트 스크립트 없이 실행되며 관련된 다양한 단계에 대한 전담 인력이 필요합니다. 반면에 자동화된 테스트는 기술 도구와 소프트웨어 프로그램을 사용하여 사람의 도움 없이 수행할 수 있습니다. 테스트 자동화는 수동 테스트보다 저렴하고 시간이 덜 걸립니다. 또한 수동 테스트는 프로그래밍할 수 없기 때문에 신뢰성이 떨어집니다.
4. 모든 로직에 대해 테스트 케이스를 작성해야 합니까?
테스트 케이스는 프로그램의 논리를 설정하기 위해 작성된 코드입니다. JUnit에서는 모든 로직에 대한 테스트 케이스를 작성할 필요가 없지만 합리적으로 깨질 수 있는 로직에 대해서만 테스트 케이스를 작성할 수 있습니다.
단위 테스트 케이스는 입력 데이터와 예상 출력의 모음으로 구성됩니다. org.junit 패키지에는 Assert, Test, Before, After 등과 같은 단위 테스트에 도움이 되는 여러 클래스와 인터페이스가 포함되어 있습니다.
5. JUnit을 통합할 수 있는 도구의 몇 가지 예를 언급하시겠습니까?
JUnit은 Java 개발을 위한 사용자 친화적인 프레임워크입니다. Eclipse IDE, Apache Ant 및 Maven과 쉽게 확장 및 통합할 수 있습니다.
6. 몇 가지 유용한 JUnit 확장을 나열하고 그 목적을 설명하십시오.
Cactus, JWebUnit, XMLUnit 및 MockObject라는 네 가지 주요 JUnit 확장이 있습니다. 아래에서 그 용도를 자세히 설명했습니다.
- Cactus: 컨테이너 내부에서 테스트를 구현하는 서버 측 Java 코드를 테스트하기 위한 프레임워크입니다. 선인장 생태계에는 선인장 프레임워크와 선인장 통합 모듈이라는 두 가지 구성 요소가 있습니다. 프레임워크는 테스트 작성을 위한 API를 제공하는 엔진이고 통합 모듈은 플러그인의 도움으로 프런트 엔드를 처리합니다.
- JWebUnit: 이 자바 기반 프레임워크는 HtmlUnit과 Selenium의 기능을 결합하여 통합 테스트 인터페이스를 제공합니다. JWebUnit을 사용하면 링크, 테이블 콘텐츠 유효성 검사, 양식 입력 및 제출, 기타 기능을 통해 웹 애플리케이션을 쉽게 탐색할 수 있습니다. 고급 Java API 외에도 즉시 사용할 수 있는 어설션으로 테스트를 빠르게 생성할 수 있습니다.
- XMLUnit: XMLTestCase 라는 단일 확장 클래스를 제공합니다. XMLUnit은 또한 XML 조각(Validator 클래스)의 유효성, 두 XML 조각(Diff 및 DetailedDiff) 간의 차이점, XML 변환 결과(Transformer 클래스)에 대한 어설션을 허용하는 지원 클래스를 제공합니다.
- MockObject: 단위 테스트에 실제 객체를 포함하는 것이 불가능하거나 비현실적일 때, 모의 객체는 도움이 될 수 있습니다. 복잡한 개체의 동작을 시뮬레이션하고 다음 코딩 단계로 통합할 수 있습니다.
- 모의 객체 인스턴스 생성
- 상태 및 기대치 설정
- 모의 객체를 매개변수로 사용하여 도메인 코드 호출
- 일관성 확인
7. 'protected' 및 'private' 메서드를 어떻게 테스트합니까?
보호된 메서드에서 테스트 클래스와 대상 클래스는 동일한 패키지에 선언됩니다. 그러나 private 방식에서는 직접 테스트할 수 있는 방법이 없습니다. 방법을 '보호됨'으로 변경하거나 수동으로 테스트를 수행해야 합니다.
8. 반환 유형이 "문자열"인 경우 JUnit에서 어떤 일이 발생합니까?
이 상황에서 컴파일은 통과하지만 실행은 실패합니다. 이것은 모든 JUnit 테스트 메서드가 "void"를 반환하도록 설계되었기 때문에 발생합니다.
9. (i) 설비 (ii) 테스트 슈트 (iii) 테스트 러너 (iv) JUnit 클래스 정의
(i) Fixtures는 테스트 실행을 위한 기준선으로 사용되어 결과의 반복성을 확립합니다. 테스트 픽스처는 객체 세트의 고정 상태로 구성됩니다. 방법은 다음과 같습니다.
- setUp(): 테스트 호출 전에 실행됩니다.
- tearDown(): 테스트 메서드 이후에 실행됩니다.
(ii) Test Runner: 테스트 케이스를 실행합니다.

(iii) JUnit 클래스: JUnit을 작성하고 테스트하는 데 사용되는 메소드가 포함되어 있습니다.
(iv) Test Suite는 함께 실행되는 단위 테스트 케이스의 번들 또는 모음입니다. @Suite 또는 @RunWith 주석을 사용하여 JUnit에서 스위트 테스트를 실행할 수 있습니다.
읽기: Java의 라이브러리 관리 시스템 프로젝트
10. 자주 사용되는 몇 가지 JUnit 주석을 언급하십시오.
주석은 코드에 추가할 수 있는 단순히 메타 태그입니다. @Test 주석은 특정 메서드를 테스트 메서드로 표시합니다. 다른 유용한 주석으로는 @Before, @BeforeClass, @After, @AfterClass, @Ignores가 있습니다. JUnit 테스트를 구현하려면 이러한 주석의 중요성을 알아야 합니다. 그럼 하나씩 알아보도록 하겠습니다.
- 테스트: 이 주석은 JUnit에 테스트 케이스로 public void 메소드를 실행할 수 있음을 알려줍니다. 기본적으로 org.junit.TestCase를 대체합니다.
- 이전: 특정 테스트 케이스 이전에 명령문(예: 전제조건)을 실행하려면 @Before를 사용합니다. 이 주석을 사용하면 테스트 메서드 전에 유사한 개체를 실행할 수 있습니다.
- Before Class: JUnit의 @BeforeClass 주석을 사용하여 모든 테스트 케이스 전에 명령문을 실행할 수 있습니다.
- 이후: 임시 파일 삭제, 변수 재설정 등과 같은 각 테스트 케이스 후에 일부 명령문이 실행되도록 합니다.
- After Class: @AfterClass 주석을 사용하면 모든 테스트 케이스 후에 명령문을 실행할 수 있습니다. 예를 들어 실행이 완료된 후 모든 리소스를 해제합니다.
- Ignore: 실행 중 특정 명령문을 무시할 때 사용합니다. 예를 들어 테스트 케이스를 비활성화합니다.
또한 읽기 : Java 인터뷰 질문
11. JUnit 클래스의 다양한 유형을 설명하십시오.
Assert, TestCase 및 TestResult는 중요한 JUnit 클래스 중 일부입니다. Assert는 테스트 케이스에 메소드를 제공합니다. TestCase에는 여러 테스트를 실행하기 위한 픽스처를 정의하는 테스트 케이스가 포함되어 있습니다. TestResult에는 결과를 수집하는 메서드가 포함됩니다.
12. 언제 단위 테스트를 작성합니까?
일반적인 개발 주기에서 단위 테스트는 코드보다 먼저 작성됩니다. 이 방법을 통해 개발자는 코드 품질을 유지할 수 있습니다.
13. 디버깅을 위해 System.out.printIn()을 사용하지 말아야 하는 이유는 무엇입니까?
System.out.printIn()을 사용하여 코드를 디버그하면 장기적으로 이점이 있습니다. 프로그램이 실행될 때마다 전체 출력을 수동으로 스캔하여 코드가 올바르게 작동하는지 확인합니다. 따라서 JUnit 메소드를 코딩하고 클래스 파일에 대한 테스트를 수행하는 데 상대적으로 적은 시간이 소요됩니다.
14. JUnit의 테스트 쓰레기는 어디로 가나요?
테스트 실행자는 테스트 기간 동안 참조를 보유합니다. 테스트 인스턴스가 많은 확장 테스트의 경우 테스트 실행이 끝날 때까지 쓰레기가 수집되지 않을 수 있습니다. 테스트 실행이 완료되기 전에 가비지를 수집하기 위해 tearDown()을 사용할 수 있습니다. 이 메서드에서 명시적으로 개체를 null로 설정합니다.
15. Junit은 어떻게 설치합니까?

첫 번째 단계는 JUnit의 최신 버전인 JUnit 5를 다운로드하는 것입니다(junit.zip이라는 파일이 될 것입니다). 배포 파일의 압축을 %JUNIT_HOME% 디렉터리에 풀어야 합니다. 그런 다음 클래스 경로에 JUnit을 추가합니다.
다음으로 설치를 테스트합니다. 여기에는 Junit과 함께 배포되는 샘플 테스트(junit.jar 파일이 아니라 설치 디렉토리에 있음)를 실행하는 것이 포함됩니다. 마지막으로 "OK" 메시지와 함께 모든 테스트가 통과했음을 확인합니다. 그렇지 않은 경우 돌아가서 junit.jar이 클래스 경로에 있는지 확인합니다.
확인: Java 프로젝트를 코딩, 컴파일 및 실행하는 방법
결론
위의 JUnit 인터뷰 질문을 통해 개발자 작업을 준비하기 위해 개념을 다듬을 수 있습니다. 테스트 자동화 엔지니어 및 소프트웨어 엔지니어와 같은 직책에는 원하는 기술 집합에 JUnit도 포함됩니다. 채용 담당자는 기술 지식과 의사 소통 능력을 측정하기를 원합니다. 따라서 답변의 내용과 제시 방법이 모든 차이를 만들 것입니다.
전체 스택 소프트웨어 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육, 9개 이상의 프로젝트 및 과제, IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.