2010-08-10 5 views
0

Google 데이터에 대한 쿼리를 처리하기위한 간단한 웹 서비스가 있습니다. 응답의 다양한 측면을 테스트하기위한 높은 수준의 방법을 제공하는 asserts/case extentions를 만들고 싶습니다. 예를 들어 assertResultCountMinimum (int)을 쓸 수 있습니다. 이 메서드는 쿼리 작성, 실행 및 응답의 압축을 풀어 데이터의 유효성을 검사합니다. 나는 또한하고 싶습니다Junit4 또는 테스트 케이스 확장?

나는 이것에 대해 어떻게 가야할지에 대해 머리 속에 올바른 생각을 갖고 있는지 확인하고 싶습니다.

먼저 올바른 설정 및 티 아웃 방법으로 내 자신의 테스트 케이스 클래스를 만듭니다. 우리의 목적을 위해, MyTestCase. 그런 다음 Assert 메서드를 사용하여 Assert를 확장하는 일련의 클래스를 제공하십시오. 이 클래스의 최종 사용자는 MyTestCase를 확장하고 내가 작성한 어설 션을 사용합니다. 이것은 jWebUnit에서 볼 수있는 패턴입니다.

junit 3과 4 개념을 섞어서 사용하고있는 것처럼 느껴집니다. 나는 junit 4 개념 만 갖고 싶다. 그러나 나는 이것을 구축하기위한 적절한 방법을 내 머리 속에 일렬로 세우는 것처럼 보일 수 없다. 또한, Junit의 Assert 클래스에 속하는 assert 메서드는 모두 정적입니다. 내 주장 중 일부는 웹 서비스를 다시 쿼리해야합니다. 따라서 MytestCase 내부에서 일련의 도우미 기능을 제공해야한다고 생각합니다. 나중에는 일을 끝내지 만, 옳다고 느끼지는 않습니다.

모든 통찰력, 근사, 설명을위한 요청, 많은 감사하겠습니다.

편집 : 쟌느가 아래에 제안했듯이, 나는 모든 주장이 담긴 수퍼 클래스를 만들었습니다 & 설정/티어 다운 방법. 사실 내 어설트는 실제로 수퍼 클래스로 가져 오는 기본 junit 4 어설 션을 감싸는 도우미 함수입니다. 내 테스트는이 수퍼 클래스를 확장 할뿐입니다. 슈퍼 클래스의 인스턴스가 없어야하기 때문에 내가 고려하고있는 한 가지주의 사항은 수퍼 클래스를 추상화하는 것입니다.

+0

거의 같은 일을합니다. JUnit4가 정적 호출로 주장을 만드는 논리가 있다면, 나는 그것을 볼 수 없다. ( –

답변

1

Marc, JUnit 4에서는 두 가지 패턴을 사용합니다. "유틸리티 유형"어설 션의 경우 정적 클래스를 만들었습니다. 예를 들어 ReflectionAssertions. 그런 다음 정적 가져 오기를 사용하여 JUnit 4 테스트에서 이러한 어설 션을 사용합니다.

한 클래스에서만 사용되는 로컬 형식 어설 션의 경우 JUnit 4 테스트 클래스 자체에서 일반 메소드로 설정합니다. 예를 들어 assertCallingMyBusinessMethodWithNullBlowsUp()입니다. 이것들은 재사용 가치가별로 없습니다.

나중의 그룹이 내 테스트 외부에서 재사용 할 수 없으므로이 혼합 개념을 고려하지 않습니다. 재사용 가능한 웹 서비스 호출을하고 (따라서 상태를 필요로하는) ​​어설 션이 있다면 TestCase를 확장하지 않고 사용하는 수퍼 클래스를 만들 것입니다. 내 수퍼 클래스에는 상태와 @Before 설정 메서드가 있습니다. 따라서, 그것은 테스트의 일부입니다.

+0

Jeanne, 로컬 형식 어설 션의 두 번째 경우에있는 것처럼 들리지만 같은 패턴을 사용하고있는 것처럼 들립니다. 답장을 보내 주셔서 감사합니다. – Marc