Как на самом деле работает функциональность JUnit TestCase? - PullRequest
1 голос
/ 19 августа 2011

У меня есть такой код:

public class MyTest extends TestCase {
    private MyObject mObject1;
    private MyObject mObject2;
    ...
    @Override
    public void setUp() throws Exception {
        super.setUp();
    }
    public void testSomething() {
        mObject1 = new MyObject();
        mObject2 = new MyObject();
    }
    public void testSomething2() {
      // Here I can't access the previously created objects mObject1 and 
      // mObject2, because they are again null. 
      // Why is that, if *my* setUp() method doesn't touch them?
    }

Я предполагаю, что JUnit создает экземпляр класса снова каждый раз.Может кто-нибудь, пожалуйста, объясните мне рабочий процесс?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 августа 2011

JUnit будет создавать экземпляр класса (MyTest) один раз за тест, а затем выполнять методы

  • setUp ()
  • testXXX ()
  • tearDown ()

до тех пор, пока не будут запущены все методы, которые начинаются с test и не получат никаких параметров.Так что в вашем примере Junit дважды создаст экземпляр MyTest.Подробнее об этом вы можете прочитать в документации JUnit .

Помните, что это старый способ написания тестов.С Junit 4 (я думаю) предпочтительным способом является использование аннотаций.Вы можете проверить документацию аннотаций здесь .

В качестве примечания NUnit повторно использует экземпляр теста, поэтому в том же сценарии MyTest будет создан только один раз.

1 голос
/ 19 августа 2011

JUnit будет создавать экземпляр этого класса один раз для каждого метода тестирования, поэтому только один раз в приведенном выше коде, но попробуйте еще раз с двумя методами тестирования, и вы увидите, что он будет создан дважды.Если вы хотите сохранить некоторое состояние в полях без использования статики, взгляните на TestNG , в котором один и тот же экземпляр используется для всех методов тестирования.

...