junit3 왜 Public void test XXX () 선언 방법만 허용

2073 단어
junit 전체 생명주기 시퀀스
[img]/upload/attachment/119288/80f65f16-62bd-32b9-9f43-2ab41ba6655f.bmp[/img]
그림에서 두 번째 단계에서 TestSuite 구성 방법을 호출할 때 코드는 다음과 같습니다.

public TestSuite(final Class theClass) {
fName= theClass.getName();
try {
getTestConstructor(theClass); // Avoid generating multiple error messages
} catch (NoSuchMethodException e) {
addTest(warning("Class "+theClass.getName()+" has no public constructor TestCase(String name) or TestCase()"));
return;
}

if (!Modifier.isPublic(theClass.getModifiers())) {
addTest(warning("Class "+theClass.getName()+" is not public"));
return;
}

Class superClass= theClass;
Vector names= new Vector();
while (Test.class.isAssignableFrom(superClass)) {
Method[] methods= superClass.getDeclaredMethods();
for (int i= 0; i < methods.length; i++) {
addTestMethod(methods[i], names, theClass);
}
superClass= superClass.getSuperclass();
}
if (fTests.size() == 0)
addTest(warning("No tests found in "+theClass.getName()));
}

addTestMethod() 메서드 코드는 다음과 같습니다.

private void addTestMethod(Method m, Vector names, Class theClass) {
String name= m.getName();
if (names.contains(name))
return;
if (! isPublicTestMethod(m)) {
if (isTestMethod(m))
addTest(warning("Test method isn't public: "+m.getName()));
return;
}
names.addElement(name);
addTest(createTest(theClass, name));
}

isTestMethod() 메소드 코드는 다음과 같습니다.

private boolean isTestMethod(Method m) {
String name= m.getName();
Class[] parameters= m.getParameterTypes();
Class returnType= m.getReturnType();
return parameters.length == 0 && name.startsWith("test") && returnType.equals(Void.TYPE);
}

마지막 줄 코드는test 방법 성명에 대한 제한을 제공합니다.

좋은 웹페이지 즐겨찾기