IT이야기

Junit @Rule의 구조

cyworld 2022. 7. 2. 13:20
반응형

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

반응형