Я хочу сделать это, но я не могу. Вот мой сценарий и разумный. У меня есть абстрактный класс для тестовых примеров с абстрактным методом test(). Метод test() должен определяться подклассом; он должен быть реализован с логикой для определенного приложения, например CRMAppTestCase extends CompanyTestCase
. Я не хочу, чтобы метод test() вызывался напрямую, я хочу, чтобы суперкласс вызывал метод test(), в то время как подкласс может вызывать метод, который вызывает это (и выполняет другую работу, например, установку текущего дата-время перед тестированием, например). Пример кода:
public abstract class CompanyTestCase {
//I wish this would compile, but it cannot be declared private
private abstract void test();
public TestCaseResult performTest() {
//do some work which must be done and should be invoked whenever
//this method is called (it would be improper to expect the caller
// to perform initialization)
TestCaseResult result = new TestCaseResult();
result.setBeginTime(new Date());
long time = System.currentTimeMillis();
test(); //invoke test logic
result.setDuration(System.currentTimeMillis() - time);
return result;
}
}
Затем, чтобы расширить это....
public class CRMAppTestCase extends CompanyTestCase {
public void test() {
//test logic here
}
}
Тогда, чтобы назвать это....
TestCaseResult result = new CRMAppTestCase().performTest();