Junit @Rule의 구조
코드에 대한 , 에 대한 내용을 싶습니다.@Rule
주석 기능을 사용하여 테스트 케이스를 작성할 수 있습니다.간단한 예를 통해 기능에 대한 자세한 설명을 제공하는 몇 가지 좋은 답변 또는 링크를 제공하십시오.
규칙은 테스트 클래스 내의 모든 테스트에 적용되는 기능을 더 일반적인 방법으로 추가하기 위해 사용됩니다.
예를 들어 External Resource는 테스트 메서드 전후에 코드를 실행합니다.@Before
★★★★★★★★★★★★★★★★★」@After
의 .ExternalResource
@Before
★★★★★★★★★★★★★★★★★」@After
는 코드 재사용을 개선할 기회를 제공합니다.같은 규칙을 2개의 다른 테스트클래스에서 사용할 수 있습니다.
이 설계는 다음을 기반으로 했습니다.JUnit에서의 인터셉터
자세한 내용은 JUnit Wiki: Rules를 참조해 주세요.
Junit Rules는 AOP(Aspect Oriented Programming)의 원칙에 따라 작동합니다.테스트 방법을 가로채기 때문에 특정 테스트 방법을 실행하기 전후에 몇 가지 작업을 수행할 수 있는 기회를 제공합니다.
다음 코드의 예를 들어 보겠습니다.
public class JunitRuleTest {
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
@Test
public void testRule() throws IOException {
File newFolder = tempFolder.newFolder("Temp Folder");
assertTrue(newFolder.exists());
}
}
상기 테스트 방법이 실행될 때마다 임시 폴더가 생성되고 해당 방법 실행 후 삭제됩니다.이것은 Junit에서 제공하는 기본 제공 규칙의 예입니다.
비슷한 행동은 우리만의 규칙을 만드는 것으로도 달성될 수 있다.Junit은 자체 Junit 규칙을 작성하기 위해 구현할 수 있는 TestRule 인터페이스를 제공합니다.
다음은 참고용으로 유용한 링크입니다.
동작에 대한 설명:
에 테스트 와 JUnit으로 만듭니다.Execute()
테스트를 실행합니다. 콜이 statement.Execute()
테스트를 JUnit은 합니다.@Rule
규칙의 "함수는 스테이트먼트에 스테이트먼트를 합니다.TestRule의 "적용" 함수는 테스트와 함께 스테이트먼트에 지정된 새 스테이트먼트를 반환합니다. ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」Execute()
Statement의 메서드를 할 수 번 할 수 , 대로 할 수 있습니다).before and after
.
이제 JUnit에는 테스트를 실행하는 것 이상의 작업을 수행하는 새로운 문이 추가되어 있습니다.이 문은 이행을 호출하기 전에 다시 다른 모든 규칙에 전달할 수 있습니다.
규칙은 일반적인 방법으로 각 테스트 방법의 동작을 향상시키기 위해 사용됩니다.Junit 규칙은 테스트 메서드를 가로채고 테스트 메서드가 실행되기 전 및 테스트 메서드가 실행된 후에 작업을 수행할 수 있도록 합니다.
예를 들어 @Timeout 규칙을 사용하여 모든 테스트의 타임아웃을 설정할 수 있습니다.
public class TestApp {
@Rule
public Timeout globalTimeout = new Timeout(20, TimeUnit.MILLISECONDS);
......
......
}
@TemporaryFolder 규칙은 임시 폴더 및 파일을 만드는 데 사용됩니다.테스트 방법이 실행될 때마다 임시 폴더가 생성되고 해당 방법 실행 후에 삭제됩니다.
public class TempFolderTest {
@Rule
public TemporaryFolder tempFolder= new TemporaryFolder();
@Test
public void testTempFolder() throws IOException {
File folder = tempFolder.newFolder("demos");
File file = tempFolder.newFile("Hello.txt");
assertEquals(folder.getName(), "demos");
assertEquals(file.getName(), "Hello.txt");
}
}
이 링크에서는 junit에서 제공하는 기본 제공 규칙의 예를 볼 수 있습니다.
언급URL : https://stackoverflow.com/questions/13489388/how-does-junit-rule-work
'IT이야기' 카테고리의 다른 글
vuex에 저장된 어레이를 렌더링하는 방법 (0) | 2022.07.02 |
---|---|
DTO 및 DAO 개념 및 MVC (0) | 2022.07.02 |
Vue를 사용하여 v-for loop에서 반복 가능한 요소를 함수 매개 변수로 전달 (0) | 2022.07.02 |
Runtime.getRuntime().totalMemory()와 freeMemory()는 무엇입니까? (0) | 2022.07.02 |
스레드의 컨텍스트 클래스 로더와 일반 클래스 로더의 차이 (0) | 2022.07.02 |