深入实践Spring Boot2.3.4 MongoDB测试

    xiaoxiao2024-04-20  7

    2.3.4 MongoDB测试

    如果还没有安装MongoDB服务器,可以参照附录B的方法安装并启动一个MongoDB服务器。然后,使用如代码清单2-18所示的配置方法配置连接服务器的一些参数,该配置假定你的MongoDB服务器安装在本地,并使用默认的数据库端口:27017。

    代码清单2-18 MongoDB数据库配置

    # MongoDB

    mongo.host=localhost

    mongo.name=test

    mongo.port=27017

    这样就可以编写一个JUint测试例子来测试UserRepository接口的使用情况,如代码清单2-19所示。测试例子首先使用用户文档类创建一个用户对象实例,然后使用资源库接口调用save方法将用户对象保存到数据库中,最后使用f?indAll方法查询所有用户的列表,并使用一个循环输出用户的简要信息。

    代码清单2-19 MongoDB测试

    @RunWith(SpringJUnit4ClassRunner.class)

    @ContextConfiguration(classes = {TestDataSourceConfig.class})

    @FixMethodOrder

    public class RepositoryTests {

        private static Logger logger = LoggerFactory.getLogger(RepositoryTests.class);

     

        @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired

        UserRepository userRepository;

     

        @Before

        public void setup(){

            Set<String> roles = new HashSet<>();

            roles.add("manage");

            User user = new User("1","user","12345678","name","email@com.cn",new Date(),

    roles);

            userRepository.save(user);

        }

     

        @Test

        public void findAll(){

            List<User> users = userRepository.findAll();

            Assert.notNull(users);

            for(User user : users){

                logger.info("===user=== userid:{}, username:{}, pass:{}, registra

    tionDate:{}",

                    user.getUserId(), user.getName(), user.getPassword(), user.

    getRegistrationDate());

            }

        }

    }

    现在可以在IDEA的Run/Debug Conf?iguration配置中增加一个JUint测试项目,模块选择mongodb,工作目录选择模块所在的工程根目录,类选择上面编写的测试例子,即dbdemo.mongo.test.RepositoryTests,并将配置保存为mongotest。

    使用Debug方式运行测试项目mongotest。如果通过测试,将输出查到的用户的简要信息,如下所示:

    dbdemo.mongo.test.RepositoryTests - ===user=== userid:1, username:name, pass:12345678, registrationDate:Tue Jun 07 14:26:02 CST 2016

    这时使用MongoDB数据库客户端输入下面的查询指令,也可以查到这条文档的详细信息,这是一条JSON结构的文本信息。

    > db.user.find()

    { "_id" : "1", "_class" : "dbdemo.mongo.models.User", "username" : "user", "password" : "12345678", "name" : "name", "email" : "email@com.cn", "registrationDate" : ISODate("2016-04-13T06:27:02.423Z"), "roles" : [ "manage" ] }

    2.4 使用Neo4j

    有没有既具有传统关系型数据库的优点,又具备NoSQL数据库优势的一种数据库呢?Neo4j就是一种这样的数据库。Neo4j是一个高性能的NoSQL图数据库,并且具备完全事务特性。Neo4j将结构化数据存储在一张图上,图中每一个节点的属性表示数据的内容,每一条有向边表示数据的关系。Neo4j没有表结构的概念,它的数据用节点的属性来表示。

    最新回复(0)