В настоящее время тестируемый класс выглядит так, как показано ниже
@Service
public class ClassToBeTested {
private WebTarget target;
@Autowired
private AnotherClass anotherClass;
@Autowired
public ClassToBeTested(String Uri) {
target = ClientBuilder.newClient().target("some uri");
}
public String getInfo(String A, String B) {
String someValue = anotherClass.getSomeValue(A, B);
...
}
AnotherClass
выглядит так, как показано ниже
import javax.cache.CacheManager;
@Service
public class AnotherClass {
private WebTarget target;
private WebTarget satTarget = null;
private HazelcastServerCacheManager ms;
private HazelcastInstance instance;
@Autowired
public AnotherClass(String Url, CacheManager manager) {
target = ClientBuilder.newClient().target("some url");
this.ms = (HazelcastServerCacheManager) manager;
this.instance = ms.getHazelcastInstance();
}
public String getSomeValue(String A, String B) {
...
Здесь я пытаюсь написать тестовый блок для ClassToBeTested
и не хочу издеваться над AnotherClass
. Для этого мне нужно AutoWire AnotherClass
.
@RunWith(SpringRunner.class)
public class TestClass {
@Autowired
private ClassToBeTested classTobeTested;
@Autowired
private AnotherClass anotherClass;
@TestConfiguration
static class ClassToBeTestedTestConfiguration {
private CacheManager manager;
@Bean
public AnotherClass anotherClass(){
return new anotherClass("some url", manager);
@Bean
public ClassToBeTested classTobeTested(){
return new classTobeTested("some url");
}
}
@Test
...
Здесь, когда я пишу тестовый пример и запускаю его, я получаю исключение нулевого указателя. Причиной не является создание экземпляра CacheManager. Как мне это сделать в этом случае?