JUnit 5에 대한 자동 수정 방법 및 클래스 가시성
예를 들어 JUnit 4에서 JUnit 5로 마이그레이션할 때 모든 테스트 클래스와 메서드를
public
로 작성하는 데 익숙했습니다. 그러나 JUnit 5에서는 package private
가 될 수 있습니다.예를 들어 대신에:
public class Junit5VisibilityTest {
@Test
public void thisDoesNotNeedToBePublic(){
Assertions.assertTrue(true);
}
}
나는 정말로 쓰고 싶다 :
class Junit5VisibilityTest {
@Test
void thisDoesNotNeedToBePublic(){
Assertions.assertTrue(true);
}
}
이것에 코딩하기 위해 근육 기억을 구축하는 데 시간이 걸렸고 여전히 가끔씩 실수합니다.
선생 사용
Sensei를 사용하면
public
메서드와 클래스를 찾고 자동으로 선언을 package private
로 수정하는 레시피를 만들 수 있습니다.이를 달성하기 위해 레시피를 만들었습니다.
Name - JUnit: JUnit 5 test methods do not need to be public
Description - JUnit 5 test methods do not need public visibility
Level - Error
Error
로 분류한 이유는 이 코딩 방식을 없애고 IDE에서 코드를 작성할 때 문제를 더 잘 파악하고 싶기 때문입니다.클래스 선언 수정
클래스를 찾기 위해 Junit 5, 즉
@Test
에서 자식 주석이 org.junit.jupiter.api.Test
인 클래스를 검색합니다.클래스에 수정자
public
가 있는 경우:search:
class:
with:
child:
annotation:
type: "org.junit.jupiter.api.Test"
modifier: "public"
그런 다음 빠른 수정은 수정자를 변경하여 가시성을 제거하여 기본값이 되도록 하고 기본값은 내가 찾고 있는
package private
입니다.availableFixes:
- name: "remove public visibility from JUnit 5 Test class"
actions:
- changeModifiers:
visibility: ""
메서드 선언 수정
메소드 선언 수정 레시피는 클래스 레시피와 거의 동일합니다.
먼저 JUnit 5에서
public
로 주석이 달린 @Test
메서드를 검색합니다.search:
method:
annotation:
type: "org.junit.jupiter.api.Test"
modifier: "public"
그런 다음 수정자를 기본 가시성으로 변경합니다.
availableFixes:
- name: "Remove @Test method public visibility"
actions:
- changeModifiers:
visibility: ""
힌트: 여러 방법 수정
선생님은 현재 파일의 모든 위반 사항에 QuickFix를 적용할 수 있습니다.
QuickFix를 적용하기 위해
alt+enter
를 사용할 때.QuickFix 이름 메뉴를 확장하면 다음 옵션이 표시됩니다.
"모두 수정: 파일의 'JUnit: JUnit 5 테스트 방법이 공개될 필요가 없습니다.' 문제"
내가 해당 옵션을 선택하면 Sensei는 내가 선택한 문제뿐만 아니라 문제의 모든 항목을 수정합니다.
클래스 수정
메서드가 공개일 필요가 없는 것과 마찬가지로 클래스도 마찬가지입니다.
레시피와 QuickFix를 생성하여 클래스를 수정할 수 있습니다.
Name - JUnit: Junit 5 Test classes do not need to be public
Description - Junit 5 Test classes do not need to be public
Level - Error
public
이고 @Test
주석이 있는 메서드가 있는 클래스를 찾을 때. 그런 다음 가시성을 변경하고 싶습니다.search:
class:
modifier: "public"
anyOf:
- child:
method:
annotation:
type: "Test"
changeModifiers
작업을 다시 사용하여 클래스 정의를 변경할 수 있습니다.availableFixes:
- name: "Remove @Test class public visibility"
actions:
- changeModifiers:
visibility: ""
요약
정적 분석 도구는 처음에 JUnit에서 이 권장 접근 방식을 알려주었습니다. 그러나 정적 분석 도구는 프로그래밍하면서 코드를 변경하기 위한 근육 기억력을 구축하는 데 도움이 되지 않았습니다.
경고하려면 '수준'을 사용하십시오. 그것이 문제일 때 나는 처음에는 그것을 '오류'로 만들고 코딩 접근 방식에서 벗어나면서 이것을 줄입니다.
QuickFix를 적용할 때 드롭다운 메뉴 옵션을 사용하여 Sensei를 사용하여 현재 파일의 모든 문제를 동시에 수정할 수 있습니다.
Sensei 레시피를 만들면 이전 코딩 접근 방식을 실시간으로 볼 수 있습니다. 그리고 이따금 코딩에서 실수할 경우 접근 방식을 강화하기 위해 QuickFix합니다.
"Preferences\Plugins"(Mac) 또는 "Settings\Plugins"(Windows)를 사용하여 IntelliJ 내에서 "sensei secure code"를 검색하여 Sensei를 설치할 수 있습니다.
이에 대한 소스 코드 및 레시피는 Secure Code Warrior GitHub 계정의
sensei-blog-examples
모듈에 있는 junitexamples
리포지토리에서 찾을 수 있습니다.Reference
이 문제에 관하여(JUnit 5에 대한 자동 수정 방법 및 클래스 가시성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/securecodewarrior/automatically-amending-method-and-class-visibility-for-junit-5-31p8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)