错误的测试套件方法¶
ID: java/wrong-junit-suite-signature
Kind: problem
Security severity:
Severity: warning
Precision: medium
Tags:
- testability
- maintainability
- frameworks/junit
Query suites:
- java-security-and-quality.qls
JUnit 3.8 要求用于定义 TestRunner
将使用的 TestSuite
的 suite
方法具有特定的签名。如果 suite
方法没有预期的签名,JUnit 就不会将其检测为 suite
方法。
建议¶
确保 junit TestCase
类中的 suite
方法声明为 public
和 static
,并且它们的返回类型为 junit.framework.Test
或其子类型之一。
示例¶
在以下示例中,BadSuiteMethod.suite
不会被 JUnit 检测到,因为它没有声明为 public
。但是,CorrectSuiteMethod.suite
*可以* 被 JUnit 检测到,因为它具有预期的签名。
public class BadSuiteMethod extends TestCase {
// BAD: JUnit 3.8 does not detect the following method as a 'suite' method.
// The method should be public, static, and return 'junit.framework.Test'
// or one of its subtypes.
static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(new MyTests("testEquals"));
suite.addTest(new MyTests("testNotEquals"));
return suite;
}
}
public class CorrectSuiteMethod extends TestCase {
// GOOD: JUnit 3.8 correctly detects the following method as a 'suite' method.
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(new MyTests("testEquals"));
suite.addTest(new MyTests("testNotEquals"));
return suite;
}
}
参考¶
JUnit:JUnit Cookbook。