2016-04-01 2 views
0

Попытка провести некоторое тестирование JUnit, но прошло некоторое время, поэтому я забыл кое-что. Если я тестирую класс, я создаю объект класса в @before(), но затем в режиме teardown я не должен делать его нулевым? таким образом он устраняет любые проблемы или что-либо, что может помешать моему следующему тесту?Teardown() в тестировании Junit для сброса полей

до сих пор я это сделал.

package potluck.Testing; 

import static org.junit.Assert.*; 

import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 

import potluck.domain.Controller; 
/** 
* @author Samuel 
* 
*/ 
    public class ControllerTest { 

    /** 
    * @throws java.lang.Exception 
    */ 
@Before 
public void setUp() throws Exception { 

    Controller testCntlr = Controller.getInstance(); 
} 

/** 
* @throws java.lang.Exception 
*/ 
@After 
public void tearDown() throws Exception { 
testCntlr() = null; 
} 


} 

но он говорит, что он не может быть разрешен переменной.

+2

Объем контроллера находится в setup(), поэтому как его можно найти в tearDown()? Переместите переменную. – KevinO

ответ

0

Я нашел ошибку. Я не создавал его в правильном месте. Объявив его за пределами @before, я могу просто testCntlr.getInstance(); в @before, что делает его новым. Затем он видит это в @after.

Controller testCntlr; 
/** 
* @throws java.lang.Exception 
*/ 
@Before 
public void setUp() throws Exception { 
    testCntlr = Controller.getInstance() ; 
} 

/** 
* @throws java.lang.Exception 
*/ 
@After 
public void tearDown() throws Exception { 
    testCntlr = null; 
} 
1

Заполните это поле на ControllerTest. Как написано, он выходит за рамки, как только setup() заканчивается.

Чтобы ответить на более крупный вопрос, вы, вероятно, не должны этого делать. Каждый раз, когда вы создаете новый экземпляр в setup(), вы удаляете ссылку на старый. Старый экземпляр не должен влиять на будущие тесты (хотя всегда есть способы сделать для вас неприятности).

3

Нет, вы делаете не нужно установить поля нуль в методе Teardown.

JUnit запускает каждый метод испытаний в свежем экземпляре тестового класса.

Ваш тест будет работать нормально, если вы просто опустите метод tearDown.

Метод tearDown необходим только в том случае, если ваши тесты имеют побочные эффекты за пределами объекта, такие как создание файла или папки, вставка в базу данных, обновление статического поля и т. Д. В этих случаях метод tearDown может быть используемый для отмены побочного эффекта теста.

Смежные вопросы