كيفية اختبار واجهات مخطط Spring Boot MyBatis باستخدام Spring Tester؟

Oct 13, 2025

يعد اختبار واجهات مخطط Spring Boot MyBatis خطوة حاسمة في ضمان موثوقية التطبيق الخاص بك ووظائفه. باعتباري أحد موردي Spring Tester، فأنا أفهم أهمية الاختبار الشامل والتحديات التي يواجهها المطورون عندما يتعلق الأمر باختبار واجهات مخطط MyBatis. في منشور المدونة هذا، سأشارك بعض أفضل الممارسات والتقنيات حول كيفية اختبار واجهات مخطط Spring Boot MyBatis بشكل فعال باستخدام Spring Tester.

فهم واجهات مخطط MyBatis

MyBatis هو إطار عمل شائع يعمل على تبسيط الوصول إلى قاعدة البيانات في تطبيقات Java. واجهات مخطط MyBatis هي واجهات Java التي تحدد أساليب SQL لعمليات قاعدة البيانات. تُستخدم هذه الواجهات للتفاعل مع قاعدة البيانات دون الحاجة إلى كتابة تعليمات برمجية معيارية لعمليات JDBC.

عند اختبار واجهات مخطط MyBatis، نحتاج إلى التأكد من صحة استعلامات SQL المحددة في هذه الواجهات وأنها تُرجع النتائج المتوقعة. يوفر Spring Tester طريقة مناسبة لاختبار هذه الواجهات في سياق تطبيق Spring Boot.

إعداد بيئة الاختبار

قبل أن نبدأ الاختبار، نحتاج إلى إعداد بيئة الاختبار. أولاً، تأكد من أن لديك التبعيات التالية في ملفكpom.xmlإذا كنت تستخدم مافن:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>اختبار</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter-test</artifactId> <نطاق>اختبار</نطاق> </dependency>

توفر هذه التبعيات أدوات الاختبار الضرورية لـ Spring Boot وMyBatis.

كتابة اختبار بسيط لواجهة MyBatis Mapper

لنفترض أن لدينا واجهة مخطط MyBatis بسيطة تسمىUserMapperيحتوي على طريقة للعثور على المستخدم عن طريق المعرف:

import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @Mapper public الواجهة UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User findUserById(int id); }

لاختبار واجهة مصمم الخرائط هذه، يمكننا كتابة فئة اختبار باستخدام Spring Tester. هنا مثال:

import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import static org.junit.jupiter.api.Assertions.assertNotNull; @SpringBootTest public class UserMapperTest { @Autowired Private UserMapper userMapper; @Test public void testFindUserById() { User user = userMapper.findUserById(1); تأكيدNotNull(user); } }

في هذا الفصل الاختباري، نستخدم@SpringBootTestتعليق توضيحي لتحميل سياق تطبيق Spring Boot. نقوم بعد ذلك بالتوصيل التلقائيUserMapperواجهة وكتابة طريقة اختبار لاستدعاءفيندوربيطريقة. نحن نستخدم JUnit 5تأكيدNotNullالتأكيد للتأكد من أن المستخدم الذي تم إرجاعه ليس فارغًا.

الاختبار باستخدام قاعدة بيانات الاختبار

في سيناريو العالم الحقيقي، لا نريد استخدام قاعدة بيانات الإنتاج للاختبار. يمكننا استخدام قاعدة بيانات في الذاكرة مثل H2 للاختبار. أضف التبعية التالية إلى ملفكpom.xml:

<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>اختبار</scope> </dependency>

ثم قم بتكوين قاعدة بيانات الاختبار في ملفكاختبار التطبيق.خصائصملف:

Spring.datasource.url=jdbc:h2:mem:testdb Spring.datasource.driverClassName=org.h2.Driver Spring.datasource.username=sa Spring.datasource.password=password Spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

الآن، عند إجراء الاختبارات، سيستخدم Spring Boot قاعدة بيانات H2 الموجودة في الذاكرة بدلاً من قاعدة بيانات الإنتاج.

اختبار الاستعلامات والمعاملات المعقدة

في بعض الأحيان، قد تحتوي واجهات مخطط MyBatis على استعلامات أو معاملات معقدة. على سبيل المثال، قد تحتوي واجهة مخطط الخرائط على طريقة لإدراج مستخدم ثم تحديث سجل آخر ذي صلة في نفس المعاملة.

لنفترض أن لديناUserMapperمع طريقة لإدراج مستخدم:

Lab Colloid Mill MachineLab Colloid Mill Machine

import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Options; @Mapper public الواجهة UserMapper { @Insert("INSERT INTO users (name, email) VALUES (#{name}, #{email})") @Options(useGeneratedKeys = true, keyProperty = "id") int InsertUser(User user); }

ولاختبار هذه الطريقة يمكننا كتابة اختبار كالتالي:

import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import static org.junit.jupiter.api.Assertions.assertTrue; @SpringBootTest @Transactional public class UserMapperInsertTest { @Autowired Private UserMapper userMapper; @Test public void testInsertUser() { User user = new User(); user.setName("جون دو"); user.setEmail("johndoe@example.com"); int result = userMapper.insertUser(user); AssurerTrue(result > 0); } }

ال@المعاملاتيضمن التعليق التوضيحي تشغيل الاختبار داخل المعاملة، ويتم التراجع عن التغييرات التي تم إجراؤها أثناء الاختبار بعد اكتمال الاختبار.

استخدام السخرية من التبعيات الخارجية

في بعض الحالات، قد تعتمد واجهة مخطط MyBatis على خدمات أو مكونات خارجية. على سبيل المثال، قد تستدعي طريقة معين واجهة برمجة التطبيقات الخارجية للتحقق من صحة بعض البيانات قبل إجراء عملية قاعدة البيانات. في مثل هذه الحالات، يمكننا استخدام السخرية لعزل واجهة مصمم الخرائط عن هذه التبعيات الخارجية.

يمكننا استخدام Mockito، وهو إطار عمل ساخر شائع في نظام Java البيئي. أضف التبعية التالية إلى ملفكpom.xml:

<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <scope>اختبار</scope> </dependency>

فيما يلي مثال لكيفية استخدام Mockito للسخرية من خدمة خارجية في اختبار مصمم الخرائط:

import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import static org.junit.jupiter.api.Assertions.assertEquals; @SpringBootTest public class UserMapperWithMockTest { @Autowired Private UserMapper userMapper; @MockBean Private ExternalService ExternalService; @Test public void testMapperWithMock() { Mockito.when(externalService.validateData(Mockito.any())).thenReturn(true); مستخدم المستخدم = userMapper.findUserById(1); AssuredEquals("الاسم المتوقع"، user.getName()); } }

المنتجات ذات الصلة

باعتبارنا أحد موردي أجهزة اختبار الزنبرك، فإننا نقدم أيضًا مجموعة من معدات المختبرات عالية الجودة. قد تكون مهتمًا بمنتجنامضخة فراغ تعميم المياه العمودية,آلة مطحنة الغروانية المختبرية، ومفاعل زجاجي مغلف سعة 20 لتر. تم تصميم هذه المنتجات لتلبية احتياجات البحث العلمي والتطبيقات الصناعية المختلفة.

خاتمة

يعد اختبار واجهات مخطط Spring Boot MyBatis أمرًا ضروريًا لضمان جودة وموثوقية التطبيق الخاص بك. باستخدام Spring Tester، يمكننا بسهولة كتابة اختبارات لهذه الواجهات في سياق تطبيق Spring Boot. يمكننا استخدام قواعد البيانات في الذاكرة للاختبار والتعامل مع المعاملات واستخدام السخرية لعزل التبعيات الخارجية.

إذا كنت مهتمًا بمنتجات Spring Tester أو أي من معدات المختبرات ذات الصلة، فيرجى الاتصال بنا لمزيد من المشتريات والتفاوض. نحن ملتزمون بتزويدك بأفضل الحلول لاحتياجات الاختبار والبحث الخاصة بك.

مراجع

  • وثائق التمهيد الربيع
  • وثائق ماي باتيس
  • توثيق الوحدة الخامسة
  • توثيق موكيتو
إرسال التحقيق
إميلي كارتر
إميلي كارتر
بصفتي أخصائي تسويق متخصص في شركة Henan Beefan Equipment Co. ، Ltd. ، أركز على توسيع وجودنا العالمي في السوق. مع شغف بالابتكار ومشاركة العملاء ، أسعى جاهدين لإنشاء حملات مؤثرة تتردد مع العملاء في جميع أنحاء العالم.