@Mockbean с бросками @Qualifer во время теста Junit - PullRequest
0 голосов
/ 04 октября 2018

я пишу junits для приведенного ниже класса,

@Repository
public class IncidentRepository {

    @Autowired
    @Qualifier("mysqlJdbcTemplate")
    private JdbcTemplate mysqlJdbcTemplate;


    @Autowired
    @Qualifier("oracleJdbcTemplate")
    private JdbcTemplate oracleJdbcTemplate;

    private String tableName = "BSC_INCIDENT_STG_3";


    public String getTableName() {
        return tableName;
    }

    public List<Incident> listAll() {
        String cprSql = "SELECT 1 FROM DUAL";
        return oracleJdbcTemplate.query(cprSql, new IncidentMapper());

    }
}

, и класс Junit, над которым я работаю, таков:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = CommonConfig.class)
public class IncidentRepositoryTest {

    private final Logger log = LoggerFactory.getLogger(Application.class);

    @InjectMocks
    IncidentRepository incidentRepository;

    @Qualifier("mysqlJdbcTemplate")
    private JdbcTemplate mysqlJdbcTemplate;

    @Qualifier("oracleJdbcTemplate")
    private JdbcTemplate oracleJdbcTemplate;

    @MockBean
    private Incident incident;

@MockBean
    private IncidentMapper incidentMapper;

    private String deleteSqlQuery = "DELETE FROM ";

    String cprSql = "SELECT 1 FROM DUAL";

    List<Incident> incidentList = new ArrayList<Incident>();

    @Before
    public void setUp() throws Exception {
        //All Initializations goes here.
        MockitoAnnotations.initMocks(this);     
        mysqlJdbcTemplate = Mockito.mock(JdbcTemplate.class);
        oracleJdbcTemplate = Mockito.mock(JdbcTemplate.class);

        incident.setIncidentNumber("incidentNumber");
        incident.setApplicationId("J12342");
        incident.setCategory("O12987");
        incident.setOpenTime("ApplicationName");
        incident.setSeverityCode("OwningLob");
        incident.setAssignment("reportingCIOLOB");
        incident.setStatus("reportingCTOGroup");
        incident.setCloseTime("rto");
        incident.setStatus("status");
        incident.setElapsedTime("assetName");
        incident.setResolutionCode("environment");
        incident.setType("invNo");
        incident.setOpenGroup("osiStatus");
        incident.setResolvedGroup("measuredID");
        incident.setResolvedTime("policyID");
        incident.setUserPriority("policyName");
        incident.setJpAcctLob("lastBreakDate");
        incident.setJpAcctAppRto("lastClearedDate");
        incident.setJpImpact("osiStatus");
        incident.setJpImpactDurationMin("measuredID");
        incident.setJpExternalId("policyID");
        incident.setJpExternalSystem("policyName");
        incident.setJpConfigItem("lastBreakDate");
        incident.setJpMasterHost("lastClearedDate");
        incident.setJpSite("osiStatus");
        incident.setJpAppserviceName("measuredID");
        incident.setJpAppserviceId("policyID");
        incident.setJpVerumidentifier("policyName");

        incidentList.add(incident);

    }

    @Test
    public void testListAll() throws Exception {

when(oracleJdbcTemplate.query(cprSql,incidentMapper)).thenReturn(incidentList);
        incidentRepository.listAll();       
    }
}

Проблема в том, что объект mysqlJdbcTemplateвсегда нулевой в классе IncidentRepository, даже когда я его издевался.

Я не хочу, чтобы вы @Autowired аннотация. Я просто хочу издеваться над объектами.

Может кто-нибудь помочь, пожалуйста?

...