स्प्रिंग बूट 2.0.3 का उपयोग करना।रिलीज

परीक्षण का लक्ष्य एक ही ऐप में एक सेवा कॉल नियंत्रक है।

यहाँ सरलीकृत सेटअप है जो मैं कोशिश कर रहा हूँ

ऐप क्लास

@SpringBootApplication
public class StartApp {
    public static void main(String[] args) {
        SpringApplication.run(StartApp.class, args);
    }
}

नियंत्रक वर्ग

@RestController
public class EmpCtrl {

    private static final Logger logger = LoggerFactory.getLogger(EmpCtrl.class);

    @Autowired
    private EmpDao empDao;

    @RequestMapping(value = "/emp01", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
    public List<Emp> findAllEmp01() {
        logger.trace("running my.demo.controller.findAllEmp01");
        List<Emp> emps = new ArrayList<>();
        Iterable<Emp> results = this.empDao.findAll();
        results.forEach(emp -> {emps.add(emp);});
        return emps;
    }
}

सेवा वर्ग

@Service
public class GetEmpSrv {
    private static final Logger logger = LoggerFactory.getLogger(GetEmpSrv.class);

    public void getEmps01(){
        final String uri = "http://localhost:8080/emp01";
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.getForObject(uri, String.class);
        logger.debug(result);
    }
}

और जूनिट वर्ग

@RunWith(SpringRunner.class)
@SpringBootTest(classes = StartApp.class)
public class GetEmpSrvTest01 {

    @Test
    public void doCall() {
        GetEmpSrv getEmpSrv = new GetEmpSrv();
        getEmpSrv.getEmps01();
    }
}

यह ग्रहण ऑक्सीजन के अंदर चलाया जा रहा है। 3 ए (4.7.3 ए)

कंसोल में ऐसा प्रतीत होता है कि स्प्रिंग बूट चल रहा है .. ic h2 db और /emp01 का भार मैप किया जा रहा है हालांकि जूनिट आईसी के विफलता ट्रेस में

I/O error on GET request for "http://localhost:8080/emp01": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect

इससे मुझे लगता है कि एम्बेडेड टॉमकैट नहीं चल रहा है। जब मैं सामान्य रूप से वसंत शुरू करता हूं /emp01 अपेक्षित के रूप में एक JSON देता है।

मेरा प्रश्न है: क्या जूनिट के साथ इस प्रकार का परीक्षण संभव है? यदि हां, तो इसे काम करने के लिए मुझे क्या करने की आवश्यकता है?

0
Oxnard 14 अक्टूबर 2018, 19:17

1 उत्तर

सबसे बढ़िया उत्तर

अपने परीक्षण में, कृपया TestRestTemplate को ऑटोवायर करें। इसका कारण यह है कि आपका स्प्रिंग टेस्ट दूसरे पोर्ट पर चलेगा और http://localhost:8080 पर कॉल विफल हो जाएगी।

@RunWith(SpringRunner.class)
@SpringBootTest(classes = StartApp.class)
public class GetEmpSrvTest01 {

    @Autowired
    TestRestTemplate testRestTemplate;

    @Test
    public void doCall() {
        // without http://localhost:8080, testRestTemplate it will handle it for you
        testRestTemplate.getForObject("/emp01", String.class);
    }
}

इसके अलावा आप अपने परीक्षण में वस्तुओं की सूची की उम्मीद कर सकते हैं:

List<Emp> emps = testRestTemplate.getForObject("/emp01", List.class);
1
Adina Rolea 14 अक्टूबर 2018, 16:47