Тестовые примеры Junit для REST API - PullRequest
0 голосов
/ 01 июля 2019

Мне нужно написать тестовый пример junit для REST API. Новичок в тестовом примере Junit может кто-нибудь помочь мне понять и написать тестовые примеры для REST API с таким количеством EJB-инъекций.

  1. Нужно ли мне вызывать фактическую конечную точку API во время написания тестовых случаев или я могу издеваться над сервером, чтобы выполнить тестовые случаи junit для API.
  2. тестовые случаи junit должны отображать покрытие кода, как мы можем этого достичь.

Примечание: Приложение REST - это НЕ приложение на основе пружины.

@Path("/watchlistService")
public class sample {

    private static final MCPLogger LOGGER =
            MCPLoggerFactory.getLogger(WatchlistServiceAPI.class);
    @Inject
    private Config configModel;
    @Inject
    private UIConfig configUIModel;

    @EJB
    private CaseDatabaseBean caseDatabase;

    @EJB
    IDBAccess dbAccess;

    @EJB
    WatchlistServiceBean watchlistService;

    @EJB
    private IWatchlistSecurity watchlistSecurity;

    @EJB
    private TrackBean trackBean;
    @EJB
    IWatchlistAccess watchlistAccess;

    @EJB
    private DBModelValidationBean modelValidation;

    @EJB
    private IMVIAuditLogger mviAuditLogger;
    ThreadLocal<Integer> threadLocalValue = new ThreadLocal<>();
    private String getRequestUserName( @Context HttpServletRequest req )
    {
        return req.getUserPrincipal() == null ? "null" :
                req.getUserPrincipal().getName();
    }
    @GET
    @Path("/personattributes")
    @Produces("application/json;charset=utf-8")
    public Response getWatchlistPersonAttributes(@Context HttpServletRequest req) {
        try {
            JSONObject jsonPAttr = new JSONObject();
            JSONArray jsonAttributes = new JSONArray();
            for(WatchlistPersonAttribute attribute :
                    watchlistAccess.getPersonAttributes()) {
                JSONObject jsonAttribute = new JSONObject();
                jsonAttribute.put("name", attribute.name);
                jsonAttribute.put("type", attribute.type.toString());
                jsonAttribute.put("required", attribute.required);
                jsonAttributes.put(jsonAttribute);
            }
            jsonPAttr.put("attributes", jsonAttributes);
            WatchlistPersonDescriptor descriptor =
                    watchlistAccess.getPersonDescriptor();
            jsonPAttr.put("descriptor", descriptor.descriptor);
            JSONArray jsonDescriptorArguments = new JSONArray();
            for(int i = 0; i < descriptor.arguments.length; ++i) {
                jsonDescriptorArguments.put(descriptor.arguments[i]);
            }
            jsonPAttr.put("descriptorArguments", jsonDescriptorArguments);
            return Response.status(200).entity(jsonPAttr.toString()).build();
        } catch (Exception e) {
            return getReturnError("Couldn't retrieve watchlist person attributes: " + e.getMessage());
        }
    }
}
...