2016-10-27 9 views
0

У меня есть родительский абстрактный класс JUnitTest:Конструктор вызов должен быть первым оператором в конструкторе с наследованием

public abstract class RestWSTest 
{ 

    public RestWSTest() 
    { 
    } 

    @Before 
    public void setUp() throws Exception 
    { 
    ... 
    } 

    @After 
    public void tearDown() throws Exception 
    { 
    ... 
    } 
} 

Тогда я хотел бы иметь класс, расширяющий RestWSTest, как это:

public class RestWSCreateGroupTest extends RestWSTest 
{ 

    public RestWSCreateGroupTest() 
    { 
    super(); 
    } 

    @Before 
    public void setUp() throws Exception 
    { 
    super(); --> *Constructor call must be the first statement in a constructor* 
    ... 
    } 

    @After 
    public void tearDown() throws Exception 
    { 
    super(); --> *Constructor call must be the first statement in a constructor* 
    ... 
    } 

    @Test 
    public void testCreateGroup() 
    { 
    ... 
    } 
} 

Почему появляется сообщение об ошибке? У меня есть конструктор, и там я звоню super(), поэтому я действительно не знаю, что делать ...

ответ

2

Метод public void setUp() не является конструктором. Вы не можете вызвать super(); внутри него. Я думаю, что вы намереваетесь super.setUp();

+0

Да, верно. Я чувствую себя так глупо ... – Francesco

2

Вы не можете использовать вызов super() вне методов конструктора.

Другими словами, setUp() и tearDown() являются методами, и они НЕ являются конструкторами, поэтому вы не можете использовать вызов super().

Скорее вы можете получить/вызвать методы суперкласса с помощью синтаксиса: super.mySuperClassMethod();

Так изменить код, как показано ниже:

public class RestWSCreateGroupTest extends RestWSTest 
{ 

    public RestWSCreateGroupTest() 
    { 
    super(); 
    } 

    @Before 
    public void setUp() throws Exception 
    { 
    super.setUp(); 
    ... 
    } 

    @After 
    public void tearDown() throws Exception 
    { 
    super.tearDown(); 
    ... 
    } 

    @Test 
    public void testCreateGroup() 
    { 
    ... 
    } 
} 

Для получения более подробной информации см ниже ссылке: https://docs.oracle.com/javase/tutorial/java/IandI/super.html