Files
FrameTour-BE/src/test/java/com/ycwl/basic/puzzle/integration/ElementDebugTest.java
Jerry Yan 3d361200b0 refactor(puzzle): 重构元素DTO及新增元素基类
- 将ElementCreateRequest和PuzzleElementDTO中的elementType从Integer改为String
- 删除所有类型特定字段,新增config和configMap支持JSON配置
- 新增BaseElement抽象基类定义元素通用行为
- 添加ElementConfig接口和具体实现类ImageConfig、TextConfig
- 创建ElementFactory工厂类和ElementRegistrar注册器
- 新增ElementType枚举和ElementValidationException异常类
- 实现ImageElement和TextElement具体元素类
- 添加Position位置信息封装类
2025-11-18 08:13:38 +08:00

104 lines
3.9 KiB
Java

package com.ycwl.basic.puzzle.integration;
import com.ycwl.basic.puzzle.element.base.BaseElement;
import com.ycwl.basic.puzzle.element.base.ElementFactory;
import com.ycwl.basic.puzzle.element.enums.ElementType;
import com.ycwl.basic.puzzle.element.impl.ImageElement;
import com.ycwl.basic.puzzle.element.impl.TextElement;
import com.ycwl.basic.puzzle.entity.PuzzleElementEntity;
import com.ycwl.basic.puzzle.test.PuzzleTestDataBuilder;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* Element 调试测试
* 用于验证 Element 创建和配置是否正确
*/
class ElementDebugTest {
@BeforeAll
static void registerElements() {
ElementFactory.register(ElementType.TEXT, TextElement.class);
ElementFactory.register(ElementType.IMAGE, ImageElement.class);
}
@Test
void testCreateTextElement() {
System.out.println("=== 测试创建 TEXT 元素 ===");
PuzzleElementEntity entity = PuzzleTestDataBuilder.createTextElement(
1L, "testText", 100, 200, 300, 50, 10,
"测试文字", 24, "#333333"
);
System.out.println("Entity elementType: " + entity.getElementType());
System.out.println("Entity config: " + entity.getConfig());
try {
BaseElement element = ElementFactory.create(entity);
System.out.println("✅ Element 创建成功");
System.out.println("Element type: " + element.getElementType());
System.out.println("Element key: " + element.getElementKey());
assertNotNull(element);
} catch (Exception e) {
System.err.println("❌ Element 创建失败: " + e.getMessage());
e.printStackTrace();
fail("Element 创建失败");
}
}
@Test
void testCreateImageElement() {
System.out.println("\n=== 测试创建 IMAGE 元素 ===");
PuzzleElementEntity entity = PuzzleTestDataBuilder.createImageElement(
1L, "testImage", 50, 100, 100, 100, 5,
"https://example.com/test.jpg"
);
System.out.println("Entity elementType: " + entity.getElementType());
System.out.println("Entity config: " + entity.getConfig());
try {
BaseElement element = ElementFactory.create(entity);
System.out.println("✅ Element 创建成功");
System.out.println("Element type: " + element.getElementType());
System.out.println("Element key: " + element.getElementKey());
assertNotNull(element);
} catch (Exception e) {
System.err.println("❌ Element 创建失败: " + e.getMessage());
e.printStackTrace();
fail("Element 创建失败");
}
}
@Test
void testRealScenarioElements() {
System.out.println("\n=== 测试现实场景元素创建 ===");
var elements = PuzzleTestDataBuilder.createRealScenarioElements(1L);
System.out.println("元素数量: " + elements.size());
int successCount = 0;
for (PuzzleElementEntity entity : elements) {
System.out.println("\n--- 测试元素: " + entity.getElementKey() + " ---");
System.out.println("Type: " + entity.getElementType());
System.out.println("Config: " + entity.getConfig());
try {
BaseElement element = ElementFactory.create(entity);
System.out.println("✅ 创建成功");
successCount++;
} catch (Exception e) {
System.err.println("❌ 创建失败: " + e.getMessage());
e.printStackTrace();
}
}
System.out.println("\n总结: " + successCount + "/" + elements.size() + " 个元素创建成功");
assertEquals(elements.size(), successCount, "所有元素都应该创建成功");
}
}