Using the JIRA Rest API you can raise a defect automatically once a test case failed after integrating it with your framework.
Below code can help you get started , you just need to feed in your properties file which contains all the Jira project details

public class RESTclient {
//Get all the JIRA details from the property file
public static final String JIRA_URL = properties.getProperty("Jira_Url");
public static final String JIRA_USERNAME = properties
.getProperty("Jira_UserName");
public static final String JIRA_PASSWORD = properties
.getProperty("Jira_Password");
public static final String JIRA_PROJECT_ID = properties
.getProperty("Jira_Project_ID");
public static final String JIRA_ISSUE_REPORTER = properties
.getProperty("Jira_Issue_Reporter");
public static final String JIRA_ISSUE_TYPE = properties
.getProperty("Jira_Issue_Type");
public static void defectLog(String summary, String description,
String screenShotPath) {
try {
Client client = Client.create();
client.addFilter(new HTTPBasicAuthFilter(JIRA_USERNAME,
JIRA_PASSWORD));
WebResource webResource = client.resource(JIRA_URL
+ "/rest/api/2/issue");
String input = "{\"fields\":{\"project\":{\"id\":\""
+ JIRA_PROJECT_ID + "\"},\"summary\":\"" + summary
+ "\",\"description\":\"" + description
+ "\", \"reporter\": {\"name\": \"" + JIRA_ISSUE_REPORTER
+ "\"},\"issuetype\":{\"name\":\"" + JIRA_ISSUE_TYPE
+ "\"}}}";
ClientResponse response = webResource.type("application/json")
.post(ClientResponse.class, input);
String output = response.getEntity(String.class);
String[] parts1 = output.split(":");
String issueKey = parts1[2];
String[] parts2 = issueKey.split(",");
issueKey = parts2[0];
issueKey = issueKey.replace("\"", "");
// For Add attachment to Jira issue
try {
addAttachmentToIssue(issueKey, screenShotPath);
} catch (IOException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static boolean addAttachmentToIssue(String issueKey,
String screenShotPath) throws IOException {
String jira_attachment_authentication = new String(
org.apache.commons.codec.binary.Base64
.encodeBase64((JIRA_USERNAME + ":" + JIRA_PASSWORD)
.getBytes()));
CloseableHttpClient httpclient = HttpClients.createSystem();
HttpPost httppost = new HttpPost(JIRA_URL + "/rest/api/2/issue/"
+ issueKey + "/attachments");
httppost.setHeader("X-Atlassian-Token", "no-check");
httppost.setHeader("Authorization", "Basic "
+ jira_attachment_authentication);
File fileToUpload = new File(screenShotPath);
FileBody fileBody = new FileBody(fileToUpload);
HttpEntity entity = MultipartEntityBuilder.create()
.addPart("file", fileBody).build();
httppost.setEntity(entity);
CloseableHttpResponse response;
try {
response = httpclient.execute(httppost);
} finally {
httpclient.close();
}
if (response.getStatusLine().getStatusCode() == 200) {
System.out.println("ScreenShot: " + screenShotPath
+ " attached to the issue " + issueKey);
return true;
} else {
System.out.println("ScreenShot: " + screenShotPath
+ " not attached to the issue " + issueKey);
return false;
}
}
