提交 26458230 authored 作者: Matrix's avatar Matrix

feat(用例执行器): 增加了TestCaseBTO对象,用来表述一条测试用例数据

上级 0a387cd5
......@@ -13,14 +13,13 @@ import org.matrix.actuators.httpclient.HttpRequestDetail;
import org.matrix.actuators.httpclient.HttpResponseDetail;
import org.matrix.actuators.usecase.CaseActuator;
import org.matrix.database.entity.DynamicVariable;
import org.matrix.database.entity.TestCase;
import org.matrix.database.entity.TestCaseBTO;
import org.matrix.database.service.IConnectService;
import org.matrix.database.service.IDynamicVariableService;
import org.matrix.database.service.ITestCaseService;
import org.matrix.database.service.ITestDataService;
import org.matrix.enums.DynamicVarType;
import org.matrix.exception.GlobalException;
import org.matrix.socket.LogQueue;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
......@@ -39,6 +38,7 @@ import static org.springframework.util.CollectionUtils.isEmpty;
* @since 2022/1/7 at 5:49 PM
* Suffering is the most powerful teacher of life.
*/
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
@Slf4j
@Component
@AllArgsConstructor
......@@ -63,6 +63,7 @@ public class SqlExpActuator implements Actuator {
private final IConnectService connectService;
private final IDataSourceService dataSourceService;
private final ITestCaseService caseService;
private final ITestDataService dataService;
/**
* 解析给定的动态变量ByName
......@@ -136,10 +137,9 @@ public class SqlExpActuator implements Actuator {
* @return 解析后的字符串
*/
private String caseHandler(Long envId, Long projectId, DynamicVariable dynamicVar) {
long caseId = Long.parseLong(dynamicVar.getDetail());
TestCase testCase = Optional.of(caseService.getById(caseId))
.orElseThrow(() -> new GlobalException(String.format("没有找到id = %d 的TestCase", caseId)));
HttpResponseDetail responseDetail = (HttpResponseDetail) caseActuator.executeTestCase(testCase, envId, projectId)
long caseDataId = Long.parseLong(dynamicVar.getDetail());
TestCaseBTO caseBTO = dataService.toCaseBTO(caseDataId);
HttpResponseDetail responseDetail = (HttpResponseDetail) caseActuator.executeTestCase(caseBTO, envId, projectId)
.getBaseTestCaseRequestDetail();
return responseDetail.getResponseBody();
}
......
package org.matrix.database.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* TestCaseBTO. 单条数据的测试用例对象
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2022/2/22 at 4:39 PM
* Suffering is the most powerful teacher of life.
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestCaseBTO {
/**
* 测试用例
*/
private TestCase testCase;
/**
* 单条测试数据
*/
private TestData testData;
}
package org.matrix.database.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.matrix.database.entity.TestCaseBTO;
import org.matrix.database.entity.TestData;
/**
......@@ -10,5 +11,18 @@ import org.matrix.database.entity.TestData;
* @since 2022/2/22 at 3:05 PM
* Suffering is the most powerful teacher of life.
*/
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
public interface ITestDataService extends IService<TestData> {
/**
* 根据testData主键id 转换出TestCaseBTO对象,多用于动态参数绑定中
* @param testDataId testData的主键id
* @return {@link TestCaseBTO} 特指某个单条数据的测试用例,多用于动态参数绑定中
*/
TestCaseBTO toCaseBTO(Long testDataId);
/**
* {{@link #toCaseBTO(Long)}} 的重载方法
*/
TestCaseBTO toCaseBTO(TestData testData);
}
package org.matrix.database.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.matrix.database.entity.TestCase;
import org.matrix.database.entity.TestCaseBTO;
import org.matrix.database.entity.TestData;
import org.matrix.database.mapper.TestCaseMapper;
import org.matrix.database.mapper.TestDataMapper;
import org.matrix.database.service.ITestDataService;
import org.matrix.exception.GlobalException;
import org.springframework.stereotype.Service;
import java.util.Optional;
/**
* ITestDataServiceImpl.
*
......@@ -13,6 +19,50 @@ import org.springframework.stereotype.Service;
* @since 2022/2/22 at 3:06 PM
* Suffering is the most powerful teacher of life.
*/
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
@Service
public class TestDataServiceImpl extends ServiceImpl<TestDataMapper, TestData>implements ITestDataService {
public class TestDataServiceImpl extends ServiceImpl<TestDataMapper, TestData> implements ITestDataService {
private final TestDataMapper dataMapper;
private final TestCaseMapper caseMapper;
public TestDataServiceImpl(TestDataMapper dataMapper, TestCaseMapper caseMapper) {
this.dataMapper = dataMapper;
this.caseMapper = caseMapper;
}
/**
* 根据testData主键id 转换出TestCaseBTO对象,多用于动态参数绑定中
*
* @param testDataId testData的主键id
* @return {@link TestCaseBTO} 特指某个单条数据的测试用例,多用于动态参数绑定中
*/
@Override
public TestCaseBTO toCaseBTO(Long testDataId) {
TestData testData = Optional.ofNullable(dataMapper.selectById(testDataId))
.orElseThrow(() -> new GlobalException(String.format("没有找到testDataId = %d 的testData对象 ", testDataId)));
TestCase testCase = Optional.ofNullable(caseMapper.selectById(testData.getTestCaseId()))
.orElseThrow(() -> new GlobalException(String.format("在testDataId = %d的绑定对象中 没有找到testCaseId = %d 的testCase对象 ",
testDataId, testData.getTestCaseId())));
return new TestCaseBTO(testCase, testData);
}
/**
* {{@link #toCaseBTO(Long)}} 的重载方法
*
* @param testData 一条testData数据对象
*/
@Override
public TestCaseBTO toCaseBTO(TestData testData) {
TestCase testCase = Optional.ofNullable(caseMapper.selectById(testData.getTestCaseId()))
.orElseThrow(() -> new GlobalException(String.format("在testDataId = %d的绑定对象中 没有找到testCaseId = %d 的testCase对象 ",
testData.getId(), testData.getTestCaseId())));
return new TestCaseBTO(testCase, testData);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论