Получить мимо статического поля jUnit:s @BeforeClass
Есть ли способ обойти классическую проблему
public class SomeClass implements SomeOtherInterface {
private static SomeInterface some;
public SomeClass(SomeInterface someInterface) {
some = someInterface;
}
@BeforeClass
public static void doSomethingWithInterface() {
System.out.println(someInterface.someValue()); // prints null
}
}
кроме обмена
System.out.println(someInterface.someValue()); // prints null
с
System.out.println(SomeInterface.someValue());
если someValue является статическим. Проблема в том, что это для фреймворка (расширения), и пользователь должен предоставить реализацию SomeInterface.
1 ответ
Вы устанавливаете значение static
член просто в конструкторе. Поэтому, прежде чем не иметь хотя бы один объект этого класса, вы не сможете получить доступ к someValue()
, В джунит @Before
может быть полезна аннотация, которая выполняется перед каждым тестом и не static
,