assertions
이 없는 테스트케이스는 예외가 발생하지 않도록 보장합니다. 기본적인 실행 가능성 외에도 테스트 대상 코드의 동작에 대해 아무것도 보장하지 않습니다.
이 룰은 다음과 같은 프레임워크들에서 assertions
가 없는 테스트에 대하여 예외를 일으킵니다.
- AssertJ
- Awaitility
- EasyMock
- Eclipse Vert.x
- Fest 1.x and 2.x
- Hamcrest
- JMock
- JMockit
- JUnit
- Mockito
- Rest-assured 2.x, 3.x and 4.x
- RxJava 1.x and 2.x
- Selenide
- Spring’s org.springframework.test.web.servlet.ResultActions.andExpect() and org.springframework.test.web.servlet.ResultActions.andExpectAll()
- Truth Framework
- WireMock
또한, 새로운 또는 커스텀 assertion 프레임워크가 사용될 수 있으므로 규칙을 매개변수화하여 assertion으로 간주되는 특정 메서드를 정의할 수 있습니다. 이러한 함수들이 테스트 케이스에서 발견될 때, 아무런 이슈도 발생하지 않습니다.
매개 변수 값의 형식은 <FullyQualifiedClassName>#<MethodName>
이어야 합니다. 여기서 MethodName은 와일드카드 문자로 끝날 수 있습니다. 생성자의 경우 패턴은 <FullyQualifiedClassName>#<init>
이어야 합니다.
Example: com.company.CompareToTester#compare*,com.company.CustomAssert#customAssertMethod,com.company.CheckVerifier#<init>
.
규칙을 어긴 코드
@Test
public void testDoSomething() { // 규칙을 어긴 코드
MyClass myClass = new MyClass();
myClass.doSomething();
}
규칙을 준수한 해결책
import com.company.CompareToTester;
@Test
public void testDoSomething() {
MyClass myClass = new MyClass();
assertNull(myClass.doSomething()); // JUnit assertion
assertThat(myClass.doSomething()).isNull(); // Fest assertion
}
@Test
public void testDoSomethingElse() {
MyClass myClass = new MyClass();
new CompareToTester().compareWith(myClass); // 규칙을 준수한 해결책 - 커스텀 assertion 함수는 룰 매개변수로 정의되었습니다.
CompareToTester.compareStatic(myClass); // 규칙을 준수한 해결책
}
If you like SONARKUBE, don’t forget to give me a star.