2016-08-04 3 views
0

요청을 보내고 API의 응답을 처리하기 위해 API 클래스를 작성하려고합니다. https://github.com/rest-assured/rest-assured/wiki/Usage#serializationRest Assured - 본문에 중첩 POJO 게시

:

{ 
    "Title": "string", 
    "Status": "string", 
    "ActFinish": "Date", 
    "ActHrs": "float", 
    "ActStart": "Date", 
    "ActualResults": "string", 
    "AssigneeUserId": "int", 
    "CustomFields": [ 
    { 
     "Id": "string", 
     "Name": "string", 
     "Value": "string" 
    } 
    ], 
    "Description": "string", 
    "EstFinish": "Date", 
    "EstHrs": "float", 
    "EstHrsRemaining": "float", 
    "EstStart": "Date", 
    "ExpectedResults": "string", 
    "FolderId": "int", 
    "FunctionalAreaCode": "string", 
    "HowFoundCode": "string", 
    "IssueCode": "string", 
    "ModuleCode": "string", 
    "PctComplete": "int", 
    "PriorityCode": "string", 
    "Resolution": "string", 
    "ResolutionCode": "string", 
    "SeverityCode": "string", 
    "SoftwareVersionCode": "string", 
    "StepsToRepro": "string" 
} 

내가 나머지 피보험자 문서를 읽기를 통해 발견이 작업을 수행하는 가장 좋은 방법은 여기에 언급 POJO를 함께 다음 API의 일부는이 예제와 같은 요청에 부착 된 JSON의 몸을 요구하는 요청이

내 POJO는 다음과 같습니다

내 현재 POJO와
public class RequestDefectPost { 

    public String title; 
    public String status; 
    public Timestamp actFinish; 
    public float actHours; 
    public Timestamp actStart; 
    public String actualResults; 
    public int assigneeUserId; 
    public String[] customFields; 
    public String id; 
    public String name; 
    public String value; 
    public String description; 
    public Timestamp estFinish; 
    public float estHours; 
    public float estHrsRemaining; 
    public Timestamp estStart; 
    public String expectedResults; 
    public int folderId; 
    public String functionalAreaCode; 
    public String howFoundCode; 
    public String issueCode; 
    public String moduleCode; 
    public int pctComplete; 
    public String priorityCode; 
    public String resolutionCode; 
    public String severityCode; 
    public String softwareVersionCode; 
    public String stepsToRepro; 

    public RequestDefectPost(String title, String status) { 

     this.title = title; 
     this.status = status; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public Timestamp getActFinish() { 
     return actFinish; 
    } 

    public void setActFinish(Timestamp actFinish) { 
     this.actFinish = actFinish; 
    } 

    public float getActHours() { 
     return actHours; 
    } 

    public void setActHours(float actHours) { 
     this.actHours = actHours; 
    } 

    public Timestamp getActStart() { 
     return actStart; 
    } 

    public void setActStart(Timestamp actStart) { 
     this.actStart = actStart; 
    } 

    public String getActualResults() { 
     return actualResults; 
    } 

    public void setActualResults(String actualResults) { 
     this.actualResults = actualResults; 
    } 

    public int getAssigneeUserId() { 
     return assigneeUserId; 
    } 

    public void setAssigneeUserId(int assigneeUserId) { 
     this.assigneeUserId = assigneeUserId; 
    } 

    public String[] getCustomFields() { 
     return customFields; 
    } 

    public void setCustomFields(String id, String name, String value) { 
     this.customFields = new String[]{this.id = id, this.name = name, this.value = value}; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public Timestamp getEstFinish() { 
     return estFinish; 
    } 

    public void setEstFinish(Timestamp estFinish) { 
     this.estFinish = estFinish; 
    } 

    public float getEstHours() { 
     return estHours; 
    } 

    public void setEstHours(float estHours) { 
     this.estHours = estHours; 
    } 

    public float getEstHrsRemaining() { 
     return estHrsRemaining; 
    } 

    public void setEstHrsRemaining(float estHrsRemaining) { 
     this.estHrsRemaining = estHrsRemaining; 
    } 

    public Timestamp getEstStart() { 
     return estStart; 
    } 

    public void setEstStart(Timestamp estStart) { 
     this.estStart = estStart; 
    } 

    public String getExpectedResults() { 
     return expectedResults; 
    } 

    public void setExpectedResults(String expectedResults) { 
     this.expectedResults = expectedResults; 
    } 

    public int getFolderId() { 
     return folderId; 
    } 

    public void setFolderId(int folderId) { 
     this.folderId = folderId; 
    } 

    public String getFunctionalAreaCode() { 
     return functionalAreaCode; 
    } 

    public void setFunctionalAreaCode(String functionalAreaCode) { 
     this.functionalAreaCode = functionalAreaCode; 
    } 

    public String getHowFoundCode() { 
     return howFoundCode; 
    } 

    public void setHowFoundCode(String howFoundCode) { 
     this.howFoundCode = howFoundCode; 
    } 

    public String getIssueCode() { 
     return issueCode; 
    } 

    public void setIssueCode(String issueCode) { 
     this.issueCode = issueCode; 
    } 

    public String getModuleCode() { 
     return moduleCode; 
    } 

    public void setModuleCode(String moduleCode) { 
     this.moduleCode = moduleCode; 
    } 

    public int getPctComplete() { 
     return pctComplete; 
    } 

    public void setPctComplete(int pctComplete) { 
     this.pctComplete = pctComplete; 
    } 

    public String getPriorityCode() { 
     return priorityCode; 
    } 

    public void setPriorityCode(String priorityCode) { 
     this.priorityCode = priorityCode; 
    } 

    public String getResolutionCode() { 
     return resolutionCode; 
    } 

    public void setResolutionCode(String resolutionCode) { 
     this.resolutionCode = resolutionCode; 
    } 

    public String getSeverityCode() { 
     return severityCode; 
    } 

    public void setSeverityCode(String severityCode) { 
     this.severityCode = severityCode; 
    } 

    public String getSoftwareVersionCode() { 
     return softwareVersionCode; 
    } 

    public void setSoftwareVersionCode(String softwareVersionCode) { 
     this.softwareVersionCode = softwareVersionCode; 
    } 

    public String getStepsToRepro() { 
     return stepsToRepro; 
    } 

    public void setStepsToRepro(String stepsToRepro) { 
     this.stepsToRepro = stepsToRepro; 
    } 
} 

에서, JSON은 Rest Assured에 의해 침을하고는 다음과 같습니다

{ 
    "title": "Test", 
    "status": "New", 
    "actFinish": null, 
    "actHours": 0.0, 
    "actStart": null, 
    "actualResults": null, 
    "assigneeUserId": 0, 
    "customFields": [ 
    "Test", 
    "test", 
    "tesT" 
    ], 
    "id": "Test", 
    "name": "test", 
    "value": "tesT", 
    "description": null, 
    "estFinish": null, 
    "estHours": 0.0, 
    "estHrsRemaining": 0.0, 
    "estStart": null, 
    "expectedResults": null, 
    "folderId": 0, 
    "functionalAreaCode": null, 
    "howFoundCode": null, 
    "issueCode": null, 
    "moduleCode": null, 
    "pctComplete": 0, 
    "priorityCode": null, 
    "resolutionCode": null, 
    "severityCode": null, 
    "softwareVersionCode": null, 
    "stepsToRepro": null 
} 

제 질문은 샘플 JSON에 설명 된대로 올바르게 내포되도록 customFields을 어떻게 작성합니까?

답변

0

"CustomFields"를 나타내는 또 다른 POJO가 필요합니다. 예를 들어 :

public class CustomFields { 
    private String Id; 
    private String Name; 
    private String Value; 

    <getters and setters> 
} 

List<CustomFields> CustomFields 대신 String[] customFields 사용합니다. JSON 예제는 속성 이름에 낙타 대문자를 사용하지 않으므로 POJO는 낙타의 경우도 사용해서는 안된다.

REST Assured에서 POJO를 전혀 사용하지 않는 방법이 있습니다. 예를 들어 HashMap을 대신 사용할 수 있으며 일부 상황에서는 더 쉬울 수 있습니다.