Szydercza zmienna prywatna, która ma istnieć

Jak można uzyskać próbny obiekt w czasie wykonywania, gdy nie jest on tworzony / inicjowany w testowanej klasie, nie jest statyczny (wzorzec singletonu), czy też nie ma jakiegoś konstruktora testowego, do którego można by się podłączyć?

W klasie, dla której piszę testy jednostkowe, natknąłem się na scenariusz, którego jeszcze nie spotkałem / nie rozwiązałem. Mam zasób JMS (aQueueConnectionFactory dla odniesienia, ale nie powinno to mieć znaczenia), jest to prywatna zmienna klasy, którą testuję. Ponieważ majavax.annotation.Resource adnotacja, w czasie wykonywania zakłada się, że jest dostępna. Podczas testowania tak nie jest, co stwarza potrzebę wyśmiewania tego obiektu.

Nie jest to klasa statyczna i nie jest używana w sposób statyczny, a jeśli tak, to mógłbym z łatwością wyszydzić za pomocą różnych statycznych metod drwin, na które wpadłem. Ponieważ zasób nigdy nie jest tworzony lokalnie (w konstruktorze, a nawet w konstruktorze testowym), nie mam sposobu na przekazanie obiektu Mock, tak że w czasie wykonywania testu zamiast rzeczywistego obiektu używany jest makieta. Jak mogę wyszydzić ten zasób, aby podczas wykonywania testu był używany zamiast prywatnego@Resource obiekt w klasie, którą testuję?

Dla odniesienia kod dzwonicreateConnection() naQueueConnectionFactory który rzuca wyjątek zerowego wskaźnika, ponieważ Fabryka nie została zainicjowana / wyśmiewana.

@Stateless
public class Example{
  @Resource(name = "jms/exampleQCF")
  private QueueConnectionFactory queueFactory;

  ...

  public void testMe(){
    Connection connection = queueFactory.createConnection();
    ...
  }
}

questionAnswers(1)

yourAnswerToTheQuestion