Commit ae98d17473dbdb48dbd21fde613a158d1bc96236

Authored by puhui999
Committed by YunaiV
1 parent 6a4449e0

代码生成测试:系统不一样生成的文件也有差异,那就各自生成各自。新增根据操作系统动态获取测试文件资源路径

yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineAbstractTest.java
@@ -31,6 +31,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals; @@ -31,6 +31,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
31 */ 31 */
32 public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest { 32 public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest {
33 33
  34 + public String resourcesPath = ""; // 测试文件资源目录
  35 + public static final String OS_NAME = System.getProperty("os.name").toLowerCase().replace(" ", ""); // 操作系统名称
  36 +
34 @InjectMocks 37 @InjectMocks
35 protected CodegenEngine codegenEngine; 38 protected CodegenEngine codegenEngine;
36 39
@@ -41,6 +44,10 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest { @@ -41,6 +44,10 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest {
41 @BeforeEach 44 @BeforeEach
42 public void setUp() { 45 public void setUp() {
43 codegenEngine.initGlobalBindingMap(); 46 codegenEngine.initGlobalBindingMap();
  47 + // 获取测试文件 resources 路径
  48 + String absolutePath = FileUtil.getAbsolutePath("application-unit-test.yaml");
  49 + // 系统不一样生成的文件也有差异,那就各自生成各自的
  50 + resourcesPath = absolutePath.split("/target")[0] + "/src/test/resources/codegen/" + OS_NAME;
44 } 51 }
45 52
46 protected static CodegenTableDO getTable(String name) { 53 protected static CodegenTableDO getTable(String name) {
@@ -73,14 +80,14 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest { @@ -73,14 +80,14 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest {
73 80
74 @SuppressWarnings("rawtypes") 81 @SuppressWarnings("rawtypes")
75 protected static void assertResult(Map<String, String> result, String path) { 82 protected static void assertResult(Map<String, String> result, String path) {
76 - String assertContent = ResourceUtil.readUtf8Str(path + "/assert.json"); 83 + String assertContent = ResourceUtil.readUtf8Str("codegen/" + OS_NAME + path + "/assert.json");
77 List<HashMap> asserts = JsonUtils.parseArray(assertContent, HashMap.class); 84 List<HashMap> asserts = JsonUtils.parseArray(assertContent, HashMap.class);
78 assertEquals(asserts.size(), result.size()); 85 assertEquals(asserts.size(), result.size());
79 // 校验每个文件 86 // 校验每个文件
80 asserts.forEach(assertMap -> { 87 asserts.forEach(assertMap -> {
81 String contentPath = (String) assertMap.get("contentPath"); 88 String contentPath = (String) assertMap.get("contentPath");
82 String filePath = (String) assertMap.get("filePath"); 89 String filePath = (String) assertMap.get("filePath");
83 - String content = ResourceUtil.readUtf8Str(path + "/" + contentPath); 90 + String content = ResourceUtil.readUtf8Str("codegen/" + OS_NAME + path + "/" + contentPath);
84 assertEquals(content, result.get(filePath), filePath + ":不匹配"); 91 assertEquals(content, result.get(filePath), filePath + ":不匹配");
85 }); 92 });
86 } 93 }
@@ -91,7 +98,7 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest { @@ -91,7 +98,7 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest {
91 * 【调试使用】将生成的代码,写入到文件 98 * 【调试使用】将生成的代码,写入到文件
92 * 99 *
93 * @param result 生成的代码 100 * @param result 生成的代码
94 - * @param path 写入文件的路径 101 + * @param path 写入文件的路径
95 */ 102 */
96 protected void writeFile(Map<String, String> result, String path) { 103 protected void writeFile(Map<String, String> result, String path) {
97 // 生成压缩包 104 // 生成压缩包
@@ -106,7 +113,7 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest { @@ -106,7 +113,7 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest {
106 /** 113 /**
107 * 【调试使用】将生成的结果,写入到文件 114 * 【调试使用】将生成的结果,写入到文件
108 * 115 *
109 - * @param result 生成的代码 116 + * @param result 生成的代码
110 * @param basePath 写入文件的路径(绝对路径) 117 * @param basePath 写入文件的路径(绝对路径)
111 */ 118 */
112 protected void writeResult(Map<String, String> result, String basePath) { 119 protected void writeResult(Map<String, String> result, String basePath) {
@@ -121,7 +128,7 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest { @@ -121,7 +128,7 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest {
121 FileUtil.writeUtf8String(fileContent, basePath + "/" + contentPath); 128 FileUtil.writeUtf8String(fileContent, basePath + "/" + contentPath);
122 }); 129 });
123 // 写入 assert.json 文件 130 // 写入 assert.json 文件
124 - FileUtil.writeUtf8String(JsonUtils.toJsonPrettyString(asserts), basePath +"/assert.json"); 131 + FileUtil.writeUtf8String(JsonUtils.toJsonPrettyString(asserts), basePath + "/assert.json");
125 } 132 }
126 133
127 } 134 }
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineVue2Test.java
@@ -11,7 +11,6 @@ import java.util.Arrays; @@ -11,7 +11,6 @@ import java.util.Arrays;
11 import java.util.List; 11 import java.util.List;
12 import java.util.Map; 12 import java.util.Map;
13 13
14 -// TODO @puhui999:单测需要 fix  
15 /** 14 /**
16 * {@link CodegenEngine} 的 Vue2 + Element UI 单元测试 15 * {@link CodegenEngine} 的 Vue2 + Element UI 单元测试
17 * 16 *
@@ -30,9 +29,10 @@ public class CodegenEngineVue2Test extends CodegenEngineAbstractTest { @@ -30,9 +29,10 @@ public class CodegenEngineVue2Test extends CodegenEngineAbstractTest {
30 29
31 // 调用 30 // 调用
32 Map<String, String> result = codegenEngine.execute(table, columns, null, null); 31 Map<String, String> result = codegenEngine.execute(table, columns, null, null);
  32 + // 生成测试文件
  33 + //writeResult(result, resourcesPath + "/vue2_one");
33 // 断言 34 // 断言
34 - assertResult(result, "codegen/vue2_one");  
35 -// writeResult(result, "/root/ruoyi-vue-pro/yudao-module-infra/yudao-module-infra-biz/src/test/resources/codegen/vue2_one"); 35 + assertResult(result, "/vue2_one");
36 } 36 }
37 37
38 @Test 38 @Test
@@ -45,25 +45,26 @@ public class CodegenEngineVue2Test extends CodegenEngineAbstractTest { @@ -45,25 +45,26 @@ public class CodegenEngineVue2Test extends CodegenEngineAbstractTest {
45 45
46 // 调用 46 // 调用
47 Map<String, String> result = codegenEngine.execute(table, columns, null, null); 47 Map<String, String> result = codegenEngine.execute(table, columns, null, null);
  48 + // 生成测试文件
  49 + //writeResult(result, resourcesPath + "/vue2_tree");
48 // 断言 50 // 断言
49 - assertResult(result, "codegen/vue2_tree");  
50 -// writeResult(result, "/root/ruoyi-vue-pro/yudao-module-infra/yudao-module-infra-biz/src/test/resources/codegen/vue2_tree"); 51 + assertResult(result, "/vue2_tree");
51 // writeFile(result, "/Users/yunai/test/demo66.zip"); 52 // writeFile(result, "/Users/yunai/test/demo66.zip");
52 } 53 }
53 54
54 @Test 55 @Test
55 public void testExecute_vue2_master_normal() { 56 public void testExecute_vue2_master_normal() {
56 - testExecute_vue2_master(CodegenTemplateTypeEnum.MASTER_NORMAL, "codegen/vue2_master_normal"); 57 + testExecute_vue2_master(CodegenTemplateTypeEnum.MASTER_NORMAL, "/vue2_master_normal");
57 } 58 }
58 59
59 @Test 60 @Test
60 public void testExecute_vue2_master_erp() { 61 public void testExecute_vue2_master_erp() {
61 - testExecute_vue2_master(CodegenTemplateTypeEnum.MASTER_ERP, "codegen/vue2_master_erp"); 62 + testExecute_vue2_master(CodegenTemplateTypeEnum.MASTER_ERP, "/vue2_master_erp");
62 } 63 }
63 64
64 @Test 65 @Test
65 public void testExecute_vue2_master_inner() { 66 public void testExecute_vue2_master_inner() {
66 - testExecute_vue2_master(CodegenTemplateTypeEnum.MASTER_INNER, "codegen/vue2_master_inner"); 67 + testExecute_vue2_master(CodegenTemplateTypeEnum.MASTER_INNER, "/vue2_master_inner");
67 } 68 }
68 69
69 private void testExecute_vue2_master(CodegenTemplateTypeEnum templateType, 70 private void testExecute_vue2_master(CodegenTemplateTypeEnum templateType,
@@ -89,9 +90,10 @@ public class CodegenEngineVue2Test extends CodegenEngineAbstractTest { @@ -89,9 +90,10 @@ public class CodegenEngineVue2Test extends CodegenEngineAbstractTest {
89 // 调用 90 // 调用
90 Map<String, String> result = codegenEngine.execute(table, columns, 91 Map<String, String> result = codegenEngine.execute(table, columns,
91 Arrays.asList(contactTable, teacherTable), Arrays.asList(contactColumns, teacherColumns)); 92 Arrays.asList(contactTable, teacherTable), Arrays.asList(contactColumns, teacherColumns));
  93 + // 生成测试文件
  94 + //writeResult(result, resourcesPath + path);
92 // 断言 95 // 断言
93 assertResult(result, path); 96 assertResult(result, path);
94 -// writeResult(result, "/root/ruoyi-vue-pro/yudao-module-infra/yudao-module-infra-biz/src/test/resources/" + path);  
95 // writeFile(result, "/Users/yunai/test/demo11.zip"); 97 // writeFile(result, "/Users/yunai/test/demo11.zip");
96 } 98 }
97 99
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineVue3Test.java
@@ -27,9 +27,10 @@ public class CodegenEngineVue3Test extends CodegenEngineAbstractTest { @@ -27,9 +27,10 @@ public class CodegenEngineVue3Test extends CodegenEngineAbstractTest {
27 27
28 // 调用 28 // 调用
29 Map<String, String> result = codegenEngine.execute(table, columns, null, null); 29 Map<String, String> result = codegenEngine.execute(table, columns, null, null);
  30 + // 生成测试文件
  31 + //writeResult(result, resourcesPath + "/vue3_one");
30 // 断言 32 // 断言
31 - assertResult(result, "codegen/vue3_one");  
32 -// writeResult(result, "/root/ruoyi-vue-pro/yudao-module-infra/yudao-module-infra-biz/src/test/resources/codegen/vue3_one"); 33 + assertResult(result, "/vue3_one");
33 } 34 }
34 35
35 @Test 36 @Test
@@ -42,25 +43,26 @@ public class CodegenEngineVue3Test extends CodegenEngineAbstractTest { @@ -42,25 +43,26 @@ public class CodegenEngineVue3Test extends CodegenEngineAbstractTest {
42 43
43 // 调用 44 // 调用
44 Map<String, String> result = codegenEngine.execute(table, columns, null, null); 45 Map<String, String> result = codegenEngine.execute(table, columns, null, null);
  46 + // 生成测试文件
  47 + //writeResult(result, resourcesPath + "/vue3_tree");
45 // 断言 48 // 断言
46 - assertResult(result, "codegen/vue3_tree");  
47 -// writeResult(result, "/root/ruoyi-vue-pro/yudao-module-infra/yudao-module-infra-biz/src/test/resources/codegen/vue3_tree"); 49 + assertResult(result, "/vue3_tree");
48 // writeFile(result, "/Users/yunai/test/demo66.zip"); 50 // writeFile(result, "/Users/yunai/test/demo66.zip");
49 } 51 }
50 52
51 @Test 53 @Test
52 public void testExecute_vue3_master_normal() { 54 public void testExecute_vue3_master_normal() {
53 - testExecute_vue3_master(CodegenTemplateTypeEnum.MASTER_NORMAL, "codegen/vue3_master_normal"); 55 + testExecute_vue3_master(CodegenTemplateTypeEnum.MASTER_NORMAL, "/vue3_master_normal");
54 } 56 }
55 57
56 @Test 58 @Test
57 public void testExecute_vue3_master_erp() { 59 public void testExecute_vue3_master_erp() {
58 - testExecute_vue3_master(CodegenTemplateTypeEnum.MASTER_ERP, "codegen/vue3_master_erp"); 60 + testExecute_vue3_master(CodegenTemplateTypeEnum.MASTER_ERP, "/vue3_master_erp");
59 } 61 }
60 62
61 @Test 63 @Test
62 public void testExecute_vue3_master_inner() { 64 public void testExecute_vue3_master_inner() {
63 - testExecute_vue3_master(CodegenTemplateTypeEnum.MASTER_INNER, "codegen/vue3_master_inner"); 65 + testExecute_vue3_master(CodegenTemplateTypeEnum.MASTER_INNER, "/vue3_master_inner");
64 } 66 }
65 67
66 private void testExecute_vue3_master(CodegenTemplateTypeEnum templateType, 68 private void testExecute_vue3_master(CodegenTemplateTypeEnum templateType,
@@ -86,10 +88,11 @@ public class CodegenEngineVue3Test extends CodegenEngineAbstractTest { @@ -86,10 +88,11 @@ public class CodegenEngineVue3Test extends CodegenEngineAbstractTest {
86 // 调用 88 // 调用
87 Map<String, String> result = codegenEngine.execute(table, columns, 89 Map<String, String> result = codegenEngine.execute(table, columns,
88 Arrays.asList(contactTable, teacherTable), Arrays.asList(contactColumns, teacherColumns)); 90 Arrays.asList(contactTable, teacherTable), Arrays.asList(contactColumns, teacherColumns));
  91 + // 生成测试文件
  92 + //writeResult(result, resourcesPath + path);
89 // 断言 93 // 断言
90 assertResult(result, path); 94 assertResult(result, path);
91 -// writeResult(result, "/root/ruoyi-vue-pro/yudao-module-infra/yudao-module-infra-biz/src/test/resources/" + path);  
92 -// writeFile(result, "/Users/yunai/test/demo11.zip"); 95 + // writeFile(result, "/Users/yunai/test/demo11.zip");
93 } 96 }
94 97
95 } 98 }