Как переменные stati c работают в Junit при их инициализации из нескольких модулей? - PullRequest
2 голосов
/ 04 августа 2020

Предположим, у меня есть класс с переменной stati c, например:

public class var{
    public static String myvar = "thor";
}

И такие классы junit:

public class test1{
    @Test
    public void test(){
       var.myvar = "1";
    }
}

public class test2{
     @Test
    public void test(){
       var.myvar = "1";
    }
}

При запуске обоих классов junit будет у них одна и та же переменная? или как-то junit делает эти переменные потокобезопасными, поэтому каждый модуль имеет свою собственную переменную stati c?

update: если это первый случай, как вы можете настроить переменную stati c для всей сборки junit ?

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Статическая c переменная создается только один раз и используется всеми экземплярами класса.

Примечание: Если вы измените значение переменной stati c, то изменение затронет все экземпляры.

Теперь, переходя к вашему вопросу:

Q: При запуске обоих классов JUnit, будут ли они использовать одну и ту же переменную?

A: Да, они будут использовать одну и ту же переменную.

Пример:

public final class Constants {
  
   public static String myVar = "abc";

}

Классы JUnit:

@RunWith(MockitoJUnitRunner.class)
public class Test1 {
    
    @Test
    public void test(){
       Constants.myVar = "def";
    }

}

@RunWith(MockitoJUnitRunner.class)
public class Test2 {
    
    @Test
    public void test(){
        System.out.println(Constants.myVar);
    }

}

Предположим, вы вызываете метод test() из класса Test1, тогда значение myVar будет изменено на def, поскольку это обычная переменная . и когда вы вызываете метод test() из Test2, он отображает def, поскольку вы изменили значение myVar с Test1.

0 голосов
/ 04 августа 2020

Переменная stati c связана с классом, поэтому, поскольку существует только один экземпляр .class, переменная myvar также будет одной, и где бы вы к ней ни обращались, она будет такой же переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...