어썰트(Assert)는 고의로 앱을 강제종료시킴으로써 버그를 잡아내는 방법입니다.
절대로 null이 있으면 안 되는 자리인데 null이 있다든지, 양수값만 지정해야 하는데 음수값이 들어왔다든지 등등
잘못된 상황이 발생하면 앱을 아예 종료시켜 버리는 겁니다.
조금 극단적이긴 하지만 숨어있는 버그를 찾아낼 때 매우 유용하죠.
Assert로 강제종료를 하면 그냥 종료만 되는 것이 아니고 로그처럼 메시지를 남길 수 있습니다.
메시지에 강제종료된 원인을 써 넣으면 좀 더 버그를 찾아내기 쉽겠죠?
자, 그럼 Assert를 사용해봅시다.
![]()
assert를 발생시키려면 Assert 클래스의 static 메서드를 사용합니다.
Assert.assertNotNull(); 이런식으로 말이죠. 로그와 비슷하죠?
첫번째 인자로 오류가 날 시 남길 메시지를 지정합니다.
그리고 두번째 인자가 null이면 앱이 강제종료되며 로그캣에 오류 메시지를 남깁니다.
위 코드는 두번째 인자에 null을 지정했으므로 앱이 무조건 강제종료됩니다.
한번 실행해볼까요?
![]()
오류 메시지가 남은 게 보이시죠?
assert / NotNull
주장하다 / null이면 안 된다고
이런 뜻이기 때문에 두번째 인자에 null이 들어오면 강제종료가 되는 것이지요.
![]()
이렇게 남길 메시지를 생략할 수도 있는데, 그러고 싶은 분들은 없겠죠? (버그 잡기 힘들어질라고)
![]()
assert의 종류는 매우 다양합니다. (청개구리, 강제종료 7종 세트)
이것도 역시 상황에 맞게 골라 쓰시면 됩니다.
|
이름 |
뜻 |
|
assertNotNull |
null이면 안 된다고 주장하다. (어길 시 강종, 나머지도 마찬가지) |
|
assertNull |
null이어야 한다고 주장하다. |
|
assertEquals |
두 값이 같아야 한다고 주장하다. (타입별로 오버로딩 되어 있음) |
|
assertFalse |
false여야 한다고 주장하다. |
|
assertTrue |
true여야 한다고 주장하다. |
|
assertNotSame |
두 객체가 같으면 안 된다고 주장하다. |
|
assertSame |
두 객체가 같아야 한다고 주장하다. |
여기서 assertEquals는 값 자체를 비교하고 assertSame는 객체의 포인터를 비교합니다.