שרת Redis משובץ עם מבחן אתחול האביב

1. סקירה כללית

Spring Data Redis מספק דרך קלה לשילוב עם מקרים של Redis.

עם זאת, במקרים מסוימים, זה יותר נוח להשתמש בשרת מוטבע מאשר ליצור סביבה עם שרת אמיתי.

לכן, נלמד כיצד להגדיר ולהשתמש בשרת Redis המוטבע.

2. תלות

נתחיל בהוספת התלות הדרושה:

 org.springframework.boot spring-boot-starter-data-redis it.ozimov embedded-redis 0.7.2 test org.springframework.boot spring-boot-starter-test test 

ה מבחן אביב-אתחול-התחלה התלות מכילה את כל מה שאנחנו צריכים כדי להריץ מבחני אינטגרציה.

בנוסף, ה- מוטבע-רדיס מכיל את השרת המוטמע בו נשתמש.

3. התקנה

לאחר הוספת התלות, עלינו להגדיר את הגדרות החיבור בין שרת Redis ליישום שלנו.

נתחיל ביצירת מחלקה שתחזיק את המאפיינים שלנו:

@ תצורה בכיתה ציבורית RedisProperties {private int redisPort; פרטי מחרוזת redisHost; RedisProperties ציבוריים (@Value ("$ {spring.redis.port}") int redisPort, @Value ("$ {spring.redis.host}") מחרוזת redisHost) {this.redisPort = redisPort; this.redisHost = redisHost; } // גטרס}

בשלב הבא עלינו ליצור מחלקת תצורה המגדירה את החיבור ומשתמשת במאפיינים שלנו:

@Configuration @EnableRedisRepositories מחלקה ציבורית RedisConfiguration {@Bean public LettuceConnectionFactory redisConnectionFactory (RedisProperties redisProperties) {להחזיר LettuceConnectionFactory חדש (redisProperties.getRedisHost (), redisProperties.getRed; } @ שעועית ציבורית RedisTemplate redisTemplate (LettuceConnectionFactory connectionFactory) {תבנית RedisTemplate = RedisTemplate חדשה (); template.setConnectionFactory (connectionFactory); תבנית החזרה; }}

התצורה פשוטה למדי. בנוסף, הוא מאפשר לנו להריץ את השרת המוטמע ביציאה אחרת.

עיין במאמר מבוא ל- Spring Data Redis למידע נוסף על Redis with Spring Boot.

4. שרת Redis מוטבע

כעת, נגדיר את השרת המשובץ ונשתמש בו באחת הבדיקות שלנו.

ראשית, בואו ניצור application.properties קובץ בספריית משאבי הבדיקה (src / test / resources):

spring.redis.host = localhost spring.redis.port = 6370

לאחר מכן, ניצור @TestConfiguration-שיעור מסומן:

מחלקה ציבורית @TestConfiguration TestRedisConfiguration {RedisServer פרטי redisServer; TestRedisConfiguration ציבורי (RedisProperties redisProperties) {this.redisServer = RedisServer חדש (redisProperties.getRedisPort ()); } @ PostConstruct ציבורי ריק ריק PostConstruct () {redisServer.start (); } @ PreDestroy ציבור ריק preDestroy () {redisServer.stop (); }}

השרת יתחיל לאחר ההקשר. זה יתחיל במכונה שלנו ביציאה שהגדרנו במאפיינים שלנו. לדוגמה, כעת אנו יכולים להריץ את הבדיקה מבלי להפסיק את שרת Redis בפועל.

באופן אידיאלי, ברצוננו להפעיל אותו ביציאה האקראית הזמינה אך ל- Redis מוטבע אין עדיין את התכונה הזו. מה שיכולנו לעשות עכשיו זה להשיג את היציאה האקראית דרך ה- API של ServerSocket.

בנוסף, השרת יפסיק לאחר ההקשר נהרס.

ניתן לספק לשרת גם את ההפעלה שלנו:

this.redisServer = RedisServer חדש ("/ path / redis", redisProperties.getRedisPort ());

יתר על כן, ניתן להגדיר את ההפעלה לפי מערכת הפעלה:

RedisExecProvider customProvider = RedisExecProvider.defaultProvider () .override (OS.UNIX, "/ path / unix / redis") .override (OS.Windows, Architecture.x86_64, "/ path / windows / redis") .override (OS.MAC_OS_X , Architecture.x86_64, "/ path / macosx / redis") this.redisServer = RedisServer חדש (customProvider, redisProperties.getRedisPort ());

לבסוף, בואו ניצור מבחן שישתמש בו שלנו TestRedisConfiguration מעמד:

@RunWith (SpringRunner.class) @SpringBootTest (שיעורים = TestRedisConfiguration.class) מחלקה ציבורית UserRepositoryIntegrationTest {@ UserRepository UserRepository פרטי מאושר; בטל ציבורי @Test צריךSaveUser_toRedis () {UUID id = UUID.randomUUID (); משתמש משתמש = משתמש חדש (מזהה, "שם"); משתמש נשמר = userRepository.save (משתמש); assertNotNull (נשמר); }}

המשתמש נשמר בשרת Redis המוטמע שלנו.

בנוסף, היינו צריכים להוסיף ידנית TestRedisConfiguration ל SpringBootTest. כפי שאמרנו קודם, השרת התחיל לפני הבדיקה ונעצר לאחר מכן.

5. מסקנה

שרת Redis המוטבע הוא הכלי המושלם להחלפת השרת בפועל בסביבת הבדיקה. ראינו כיצד להגדיר אותו וכיצד להשתמש בו במבחן שלנו.

כמו תמיד, הקוד לדוגמאות זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found