51Testing
怬
µçÄÔ°æ

ÈçºÎÀûÓÃGPT×Ô¶¯Éú³Éµ¥Ôª²âÊÔ´úÂë

2023-5-30 09:37×÷ÕߣºÑÜÖ¾À´Ô´£ºÏ¡ÍÁ¾ò½ð

¡¡¡¡ÎªÊ²Ã´ÎÒÒª×öµ¥Ôª²âÊÔ
¡¡¡¡1. µ¥Ôª²âÊԵĶ¨ÒåºÍ×÷ÓÃ
¡¡¡¡ÔÚ¹¤×÷ÖУ¬ÎÒÃǶ¼Ï£ÍûÌá¸ßЧÂÊ¡¢±£Ö¤ÖÊÁ¿¡£ÄÇô£¬ÈçºÎÀûÓÃgptÀ´°ïÖúÎÒÃÇ¿ª·¢£¬ÌáÉýЧÂÊÄØ£¿½ñÌ죬ÎÒÃÇÀ´Ì½¾¿Ò»ÏÂÈçºÎÈÃgpt°ïÎÒÃÇ¿ìËÙдµ¥Ôª²âÊÔ¡£µ¥Ôª²âÊÔÊÇÒ»ÖÖÈí¼þ¿ª·¢¹ý³ÌÖеIJâÊÔ·½·¨£¬ËüÄܹ»ÑéÖ¤´úÂëÊÇ·ñ·ûºÏÔ¤ÆڵŦÄܺÍÉè¼ÆÒªÇó¡£Í¨¹ýµ¥Ôª²âÊÔ£¬ÎÒÃÇ¿ÉÒÔ²âÊÔ³ÌÐòÖÐÿ¸ö¶ÀÁ¢µÄµ¥Ôª£¬²¢ÔÚÐ޸ĴúÂëºó¿ìËÙÑéÖ¤ÊÇ·ñ·ûºÏ¹¦ÄÜÒªÇó¡£ÕâÑù²»½öÄÜÌá¸ß´úÂëµÄÖÊÁ¿£¬¼õÉÙȱÏݺʹíÎ󣬻¹ÄÜÌá¸ß´úÂëµÄ¿Éά»¤ÐԺͿɶÁÐÔ¡£ÈÃgptÀ´°ïÖúÎÒÃÇ¿ìËÙдµ¥Ôª²âÊÔ£¬Äܹ»ÈÃÎÒÃǸü¼Ó¸ßЧµØ¿ª·¢³ö¸ßÖÊÁ¿µÄ´úÂ룬Âú×ãÓû§ÐèÇó£¬ÌáÉý¹¤×÷ЧÂÊ¡£ËùÒÔ£¬ÈÃÎÒÃÇÒ»ÆðÀ´Ì½Ë÷Ò»ÏÂÈçºÎÀûÓÃgptÀ´Ð´µ¥Ôª²âÊÔ°É£¡
¡¡¡¡2. µ¥Ôª²âÊÔµÄÓÅÊƺͱØÒªÐÔ
¡¡¡¡µ¥Ôª²âÊÔ¿ÉÒÔ°ïÖú¿ª·¢ÈËÔ±¿ìËÙ·¢ÏÖ´úÂëÖеÄÎÊÌ⣬ÓÐЧ¼õÉÙȱÏݺʹíÎ󣬲¢Ìá¸ß´úÂëµÄÖÊÁ¿ºÍÎȶ¨ÐÔ¡£ÔÚÏîÄ¿µü´ú¹ý³ÌÖУ¬µ¥Ôª²âÊÔ¿ÉÒÔ¿ìËÙÑéÖ¤´úÂëµÄÕýÈ·ÐÔ£¬±ÜÃâÐ޸ĴúÂëºó²úÉúµÄÎÊÌ⣬ͬʱҲ¿ÉÒÔ¸üºÃµØ±£Ö¤ÏîÄ¿µÄ½ø¶ÈºÍÖÊÁ¿¡£
¡¡¡¡3. µ¥Ôª²âÊÔµÄÌôÕ½ºÍÏÞÖÆ
¡¡¡¡µ¥Ôª²âÊÔÐèÒª¿ª·¢ÈËÔ±¶Ô´úÂë½øÐÐÉîÈëÀí½â£¬²¢±àдÏàÓ¦µÄ²âÊÔÓÃÀý£¬ÕâÐèÒªÒ»¶¨µÄʱ¼äºÍ¾«Á¦¡£Í¬Ê±£¬µ¥Ôª²âÊÔÒ²¿ÉÄÜ»áÊܵ½ÏîÄ¿½ø¶ÈºÍÐèÇó±ä»¯µÄÓ°Ï죬µ¼Ö²âÊÔÓÃÀýµÄ¸üкÍά»¤³É±¾½Ï¸ß¡£Òò´Ë£¬¿ª·¢ÈËÔ±ÐèҪȨºâµ¥Ôª²âÊÔµÄÊÕÒæºÍ³É±¾£¬Ñ¡ÔñºÏÊʵIJâÊÔ²ßÂԺͷ½·¨¡£
¡¡¡¡ÀûÓÃGPTдµ¥Ôª²âÊÔ¹ý³Ì
¡¡¡¡1. GPTµÄ½éÉܺÍÓ¦Óó¡¾°
¡¡¡¡GPT£¨Generative Pre-trained Transformer£©ÊÇÒ»ÖÖ»ùÓÚÉñ¾­ÍøÂçµÄ×ÔÈ»ÓïÑÔ´¦ÀíÄ£ÐÍ£¬¿ÉÒÔÉú³É·ûºÏÓï·¨ºÍÓïÒåÒªÇóµÄÎı¾¡£ÔÚÈí¼þ¿ª·¢¹ý³ÌÖУ¬¿ÉÒÔÀûÓÃGPT×Ô¶¯Éú³Éµ¥Ôª²âÊÔ´úÂ룬Ìá¸ß²âÊÔÓÃÀý±àдµÄЧÂʺÍÖÊÁ¿¡£
¡¡¡¡2. ÀûÓÃGPT×Ô¶¯Éú³Éµ¥Ôª²âÊÔ´úÂëµÄ²½Öè
¡¡¡¡ÏÂÃæÒÔJavaÓïÑÔΪÀý£¬½éÉÜÈçºÎʹÓÃGPT×Ô¶¯Éú³Éµ¥Ôª²âÊÔ´úÂë¡£
¡¡¡¡¼ÙÉèÎÒÃÇÓÐÒ»¸ö¼òµ¥µÄ·½·¨£¬ÈçÏ£º
 public String createDeviceInfo(DeviceInfoCreateReqVO createReqVO) { createReqVO.setGuid(IdWorker.getIdStr()); 
¡¡¡¡ createReqVO.setName(createReqVO.getMac()); validateDeviceTypeExists(createReqVO.getDeviceTypeGuid()); // ²åÈë DeviceInfoDO deviceInfo = DeviceInfoConvert.INSTANCE.convert(createReqVO); deviceInfoMapper.insert(deviceInfo); // ·µ»Ø return deviceInfo.getGuid();
¡¡¡¡ }
¡¡¡¡ÎÒÃÇÐèҪΪÕâ¸ö·½·¨±àдµ¥Ôª²âÊÔ£¬¿ÉÒÔʹÓÃÒÔϲ½Ö裺
¡¡¡¡1. ¸´ÖÆÒ»¸ö·½·¨£¬ÊäÈ룺Çë°ïÕâ¸ö·½·¨Ð´Ò»¶Îµ¥Ôª²âÊÔ¡£
¡¡¡¡2. ½«GPTÉú³ÉµÄ²âÊÔ´úÂëÕ³Ìù»á´úÂëÖС£
¡¡¡¡ÒÔÏÂÊÇJava´úÂëµÄʵÏÖ£º
¡¡¡¡import org.junit.Before;
¡¡¡¡import org.junit.Test;
¡¡¡¡import org.mockito.InjectMocks;
¡¡¡¡import org.mockito.Mock;
¡¡¡¡import org.mockito.MockitoAnnotations;
¡¡¡¡import static org.mockito.Mockito.*;
¡¡¡¡public class DeviceInfoServiceTest {
¡¡¡¡    @Mock
¡¡¡¡    private DeviceInfoMapper deviceInfoMapper;
¡¡¡¡    @Mock
¡¡¡¡    private DeviceTypeMapper deviceTypeMapper;
¡¡¡¡    @InjectMocks
¡¡¡¡    private DeviceInfoService deviceInfoService;
¡¡¡¡    @Before
¡¡¡¡    public void initMocks() {
¡¡¡¡        MockitoAnnotations.initMocks(this);
¡¡¡¡    }
¡¡¡¡    @Test
¡¡¡¡    public void testCreateDeviceInfo() {
¡¡¡¡        // ´´½¨²âÊÔÊý¾Ý
¡¡¡¡        DeviceInfoCreateReqVO createReqVO = new DeviceInfoCreateReqVO();
¡¡¡¡        createReqVO.setMac("00-11-22-33-44-55");
¡¡¡¡        createReqVO.setDeviceTypeGuid("123456");
¡¡¡¡        DeviceTypeDO deviceType = new DeviceTypeDO();
¡¡¡¡        deviceType.setGuid("123456");
¡¡¡¡        deviceTypeMapper.insert(deviceType);
¡¡¡¡        DeviceInfoDO deviceInfo = new DeviceInfoDO();
¡¡¡¡        deviceInfo.setGuid("987654");
¡¡¡¡        when(deviceInfoMapper.insert(any(DeviceInfoDO.class))).thenReturn(1);
¡¡¡¡        when(deviceInfoMapper.selectById(eq("987654"))).thenReturn(deviceInfo);
¡¡¡¡        // µ÷Óñ»²âÊԵķ½·¨
¡¡¡¡        String guid = deviceInfoService.createDeviceInfo(createReqVO);
¡¡¡¡        // ÑéÖ¤½á¹ûÊÇ·ñÕýÈ·
¡¡¡¡        verify(deviceTypeMapper, times(1)).insert(deviceType);
¡¡¡¡        verify(deviceInfoMapper, times(1)).insert(deviceInfo);
¡¡¡¡        assertEquals("987654", guid);
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡ÔÚtestCreateDeviceInfo()·½·¨ÖУ¬ÎÒÃÇʹÓÃGPTÉú³ÉÁËËæ»úµÄÊäÈë²ÎÊý£¬²¢ÑéÖ¤ÁË·½·¨µÄ·µ»ØÖµÊÇ·ñÕýÈ·£¬¿´ÆðÀ´ÒѾ­ºÜÍêÉÆÁË¡£
¡¡¡¡3. GPTÉú³Éµ¥Ôª²âÊÔµÄÓÅÊƺÍÏÞÖÆ
¡¡¡¡GPT¿ÉÒÔ¸ù¾Ý¸ø¶¨µÄ´úÂëºÍ²âÊÔÒªÇó£¬Éú³É·ûºÏÓï·¨ºÍÓïÒåÒªÇóµÄ²âÊÔ´úÂ룬Ìá¸ß²âÊÔÓÃÀý±àдµÄЧÂʺÍÖÊÁ¿¡£µ«ÊÇ£¬ÓÉÓÚGPTÊÇ»ùÓÚÑù±¾Êý¾ÝѵÁ·µÄÄ£ÐÍ£¬¿ÉÄÜ»áÊܵ½Êý¾ÝÆ«²îºÍÓïÑÔÄ£ºýÐÔµÄÓ°Ï죬Éú³ÉµÄ²âÊÔ´úÂëÒ²¿ÉÄÜ´æÔÚÒ»¶¨µÄ´íÎóºÍȱÏÝ¡£Òò´Ë£¬ÔÚʹÓÃGPTÉú³É²âÊÔ´úÂëʱ£¬ÐèÒª¿ª·¢ÈËÔ±½øÐÐÊʵ±µÄÑéÖ¤ºÍÐÞÕý¡£
¡¡¡¡SpringBootÏîÄ¿µ¥Ôª²âÊÔÂýµÄÔ­Òò¼°½â¾ö·½°¸
¡¡¡¡1. SpringBootÏîÄ¿µ¥Ôª²âÊÔÂýµÄÔ­Òò·ÖÎö
¡¡¡¡SpringBootÏîÄ¿µ¥Ôª²âÊÔÂýµÄÔ­Òò¿ÉÄÜÊÇÓÉÓÚ²âÊÔ»·¾³µÄ´î½¨²»µ±£¬»ò²âÊÔ´úÂë±¾ÉíµÄÎÊÌâ¡£ÆäÖУ¬²âÊÔ´úÂëÁ¬½ÓÊý¾Ý¿â¿ÉÄÜÊǵ¼Öµ¥Ôª²âÊÔËٶȱäÂýµÄÒ»¸öÖØÒªÔ­Òò¡£
¡¡¡¡2. ½â¾öSpringBootÏîÄ¿µ¥Ôª²âÊÔÂýµÄ·½·¨
¡¡¡¡2.1 ÓÅ»¯²âÊÔ»·¾³
¡¡¡¡ÔÚ²âÊÔ»·¾³´î½¨Ê±£¬ÎÒÃÇ¿ÉÒÔ¿¼ÂÇÒÔÏ·½·¨ÓÅ»¯²âÊÔ»·¾³£º
¡¡¡¡¡¤È·ÈϲâÊÔ»·¾³µÄÓ²¼þÐÔÄÜÊÇ·ñÂú×ãÒªÇó¡£
¡¡¡¡¡¤ È·ÈϲâÊÔ»·¾³µÄÍøÂçÁ¬½ÓÊÇ·ñÎȶ¨¡£
¡¡¡¡¡¤ È·ÈϲâÊÔ»·¾³µÄÒÀÀµ¿âÊÇ·ñÍêÕû¡£
¡¡¡¡2.2 ÓÅ»¯²âÊÔ´úÂë
¡¡¡¡ÔÚ²âÊÔ´úÂë±àдʱ£¬ÎÒÃÇ¿ÉÒÔ¿¼ÂÇÒÔÏ·½·¨ÓÅ»¯²âÊÔ´úÂ룺
¡¡¡¡¡¤ È·ÈϲâÊÔ´úÂëµÄ¸²¸ÇÂÊÊÇ·ñ¹»¸ß¡£
¡¡¡¡¡¤ È·ÈϲâÊÔ´úÂëÊÇ·ñ´æÔÚÖظ´µÄ²âÊÔÓÃÀý¡£
¡¡¡¡¡¤ È·ÈϲâÊÔ´úÂëÊÇ·ñ´æÔÚ¶àÓàµÄ²âÊÔÓÃÀý¡£
¡¡¡¡´ËÍ⣬Á¬½ÓÊý¾Ý¿âÒ²Êǵ¼ÖÂSpringBootÏîÄ¿µ¥Ôª²âÊÔËٶȱäÂýµÄÒ»¸öÖØÒªÔ­Òò¡£ÔÚµ¥Ôª²âÊÔÖУ¬ÎÒÃÇ¿ÉÒÔʹÓÃÄÚ´æÊý¾Ý¿âÀ´Ìæ´úÕæʵµÄÊý¾Ý¿â£¬ÒÔÌá¸ß²âÊÔËٶȺͿɿ¿ÐÔ¡£
¡¡¡¡ÒÔÏÂÊÇһЩ³£ÓõÄÄÚ´æÊý¾Ý¿â£º
¡¡¡¡¡¤ H2 Database
¡¡¡¡¡¤ HSQLDB
¡¡¡¡¡¤ Apache Derby
¡¡¡¡¡¤ SQLite
¡¡¡¡ÒÔÏÂÊÇʹÓÃH2 Database×÷ΪÄÚ´æÊý¾Ý¿âµÄʾÀý
¡¡¡¡ºÃµÄ£¬ÒÔÏÂÊÇʹÓÃH2 Database×÷ΪÄÚ´æÊý¾Ý¿â½øÐе¥Ôª²âÊÔµÄʾÀý¡£
¡¡¡¡Ê×ÏÈ£¬ÔÚpom.xmlÖÐÌí¼ÓÒÔÏÂÒÀÀµ£º
¡¡¡¡<dependency>
¡¡¡¡    <groupId>com.h2database</groupId>
¡¡¡¡    <artifactId>h2</artifactId>
¡¡¡¡    <version>1.4.200</version>
¡¡¡¡    <scope>test</scope>
¡¡¡¡</dependency>
¡¡¡¡È»ºó£¬ÔÚapplication.propertiesÎļþÖÐÌí¼ÓÒÔÏÂÅäÖãº
¡¡¡¡# ʹÓÃH2ÄÚ´æÊý¾Ý¿â
¡¡¡¡spring.datasource.url=jdbc:h2:mem:test
¡¡¡¡spring.datasource.driverClassName=org.h2.Driver
¡¡¡¡spring.datasource.username=sa
¡¡¡¡spring.datasource.password=
¡¡¡¡# H2¿ØÖÆ̨·ÃÎÊ·¾¶
¡¡¡¡spring.h2.console.enabled=true
¡¡¡¡spring.h2.console.path=/h2-console
¡¡¡¡ÒÔÉÏÅäÖý«Ê¹ÓÃH2ÄÚ´æÊý¾Ý¿â×÷Ϊ²âÊÔÊý¾Ý¿â£¬²¢¿ªÆôH2¿ØÖÆ̨±ãÓڲ鿴Êý¾Ý¡£
¡¡¡¡½ÓÏÂÀ´£¬ÎÒÃÇ¿ÉÒÔÔÚµ¥Ôª²âÊÔÖÐʹÓÃH2ÄÚ´æÊý¾Ý¿â½øÐвâÊÔ¡£ÒÔÏÂÊÇÒ»¸ö¼òµ¥µÄʾÀý£º
¡¡¡¡import static org.assertj.core.api.Assertions.assertThat;
¡¡¡¡import java.util.List;
¡¡¡¡import org.junit.jupiter.api.Test;
¡¡¡¡import org.springframework.beans.factory.annotation.Autowired;
¡¡¡¡import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
¡¡¡¡import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
¡¡¡¡@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
¡¡¡¡@DataJpaTest
¡¡¡¡public class UserRepositoryTest {
¡¡¡¡    @Autowired
¡¡¡¡    private UserRepository userRepository;
¡¡¡¡    @Test
¡¡¡¡    public void testFindAll() {
¡¡¡¡        User user = new User();
¡¡¡¡        user.setUsername("test");
¡¡¡¡        user.setPassword("test");
¡¡¡¡        userRepository.save(user);
¡¡¡¡        List<User> users = userRepository.findAll();
¡¡¡¡        assertThat(users).isNotEmpty();
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡ÔÚÉÏÃæµÄʾÀýÖУ¬ÎÒÃÇʹÓÃ@DataJpaTest×¢½âÀ´Æô¶¯Spring¡£
¡¡¡¡±¾ÎÄÄÚÈݲ»ÓÃÓÚÉÌҵĿµÄ£¬ÈçÉ漰֪ʶ²úȨÎÊÌ⣬ÇëȨÀûÈËÁªÏµ51TestingС±à(021-64471599-8017)£¬ÎÒÃǽ«Á¢¼´´¦Àí
GPT µ¥Ôª²âÊÔ
µ±Ç°Ã»ÓÐÆÀÂÛµã»÷·¢±íÆÀÂÛ

Ïà¹ØÔĶÁ