我在设置将更新我的测试的变量值时遇到问题

I'm having trouble setting the value of a variable that will update my test

我的问题出在我执行“if/else”条件的部分,当我调用将执行比较并定义测试是否通过并发送一些信息的函数时,我收到的是空值。 问题在星号中。如果有人能帮助我

这是我的代码:

   public static void fxSpot_GBP_JPY(TradeData data, TradeData output) throws Exception {
        if (data == null) {
            fail("The input data object was not correctly filled");
        }
        if (output == null) {
            fail("The output data object was not correctly filled");
        }
        
        //Used to set the comment, the status and update to JIRA
        FieldsJSON fields = new FieldsJSON();
        String assertionError = "";
        
        List<String> inputs = new ArrayList<String>();
        List<String> outputs = new ArrayList<String>();
        
        String newDate = Utils.formatTimeZoneMinute(data.getTradeDate());
        String asOfTrade = Utils.formatTimeZoneMinute(data.getAsOfTradeDate());
        String executionDate = Utils.formatTimeZoneMinute(output.getExecutionDateTime());

        try {            
            //Add the data in the list
            inputs.add(data.getTransactionNumber()); outputs.add(output.getBloombergId());
            inputs.add(newDate); outputs.add(output.getTradeDate());
            inputs.add(asOfTrade); outputs.add(executionDate);
            inputs.add(data.getSettlementDate()); outputs.add(output.getValueDate());
            inputs.add(data.getTradeAmount()); outputs.add(output.getAmount2());
            inputs.add(data.getCustomerAccountCounterparty()); outputs.add(output.getMiPartyId());
            inputs.add(data.getPrincipalLoanAmount()); outputs.add(output.getAmount());
            inputs.add(data.getSecurityPrice()); outputs.add(output.getRate());
            inputs.add(data.getISOCodeOf1stCurrency()); outputs.add("BRL");//output.getCurrency2()
            inputs.add(data.getISOCodeOf2ndCurrency()); outputs.add(output.getCurrency1());

            //Compare values
            System.out.println("-------------------");
            int y = 0;
            int x = 0;
            
            for(String input : inputs) {        
                for(String out : outputs) {
                    if(y == x) {
                        if(input.equals(out)) {
                            WriterCSV.setOk("Ok");
                            **String comment = input + " = " + out;
                            fields.setComment(comment);
                            fields.setStatus("PASS");**
                            System.out.println("ok - " + input + " = " + out);
                        }else {
                            WriterCSV.setOk("not Ok");
                            **String comment = input + " = " + out;
                            fields.setComment(comment);
                            fields.setStatus("FAIL");**
                            System.out.println("not Ok - " + input + " = " + out);
                        }
                    }
                    x = x+1; // count of the list of output 
                }
                y = y+1; // count of the list of inputs
                x = 0; // reset to 0 the count of outputs
                
            }
            // evidence with the name and value of fields compared
            WriterCSV.reportSpot_CSV(data,output);
          }

这是我的测试:

@Test
    @Tag("compare")
    public void CompareSpot() throws Exception {
        //Create a list to read the CSVfile
        List<DTOTradeData> dto;
        
        //Used to get the TradeData of list dto.
        DTOTradeData dtd = new DTOTradeData();
        
        // Read a csvFile and return a list with the values to new xml
        dto = CSVReader.readCSV("spot.csv");
        
        //The xpath of xml
        FileDriverSpot spot = new FileDriverSpot();
        FileDriver output = new FileDriverSpotOutput();
        
        FieldsJSON fields = new FieldsJSON();
        
        //new xml = dataInput and the outputFile = dataOutput
        TradeData dataInput = new TradeData();
        TradeData dataOutput = new TradeData();

        for (int i = 0; i < dto.size(); i++) {
            dtd = dto.get(i); // get TradeData
            dtd.getTradeData().setDriver(spot); // set the driver 

            if (fileExist(Setup.xmlPath + dtd.getInputFile() + ".xml")) {
                
                dataInput = Reader.read(spot, Setup.xmlPath + dtd.getInputFile() + ".xml");
                dataOutput = Reader.read(output, Setup.spotPath + dtd.getOutputFile()); 

                try {
                // make the comparison  
                **FunctionalTest.fxSpot_GBP_JPY(dataInput, dataOutput);**
                }
                catch(AssertionError e) {
                    String comment = e.toString();
                    fields.setComment(comment);
                    
                }
            } else {
                fail("The file: " + dtd.getTemplateFile()
                        + " needs to go through the writing process before being compared.");
            }
                        
//Convert the file to base64
String inputData = UpdateTestStatus.convertToBase64(Setup.xmlPath + dtd.getInputFile() + ".xml");
    String outputData = UpdateTestStatus.convertToBase64(Setup.spotPath + dtd.getOutputFile());
    String evidenceCompared = UpdateTestStatus.convertToBase64(Setup.reportPath+"ReportSpot.csv");
             
            System.out.println(UpdateTestStatus.updateTestRun(**fields.getStatus(),fields.getComment()**,
                inputData,dtd.getInputFile()+ ".xml", //data of the XML and the name of the file
                    outputData,dtd.getOutputFile(),
                    evidenceCompared,"ReportSpot.csv",
                    Setup.testExec, dtd.getJiraId()).asString()); // ID testExecution and ID of 
        }
    }

测试和被测代码各自创建一个单独的 FieldsJSON 实例。一个实例中的数据集在另一个实例中将不可见(除非数据已声明 static,在这种情况下无需创建实例)。

您可以通过使用单个实例来解决此问题,从测试传递到 fxSpot_GBP_JPY 方法,或者从该方法返回到测试。