Junit/Fongo:如何在单元测试中使用 Fongo 来检查 NotNull

2023-12-07

我正在编写一个基本单元测试,检查返回的查询(DataVersion 类型)是否不为空。我必须确保我正在使用 Fongo 来测试我的数据库。

这是回购类:

    @Repository
    public class DataVersionDaoMongo extends MongoBaseDao<DataVersion> implements DataVersionDao {

    @Autowired
    MongoOperations mongoOperations;

    public DataVersionDaoMongo() {
        initType();
    }

    @Override
    public DataVersion findByDBAndCollection(String dbName, String collectionName) {

        Criteria criteria = Criteria.where("dbName").is(dbName).and("collectionName").is(collectionName);
        Query query = Query.query(criteria);
        return mongoOperations.findOne(query, DataVersion.class);

    }
}

这是我的单元测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:/testApplicationContext.xml")
public class DataVersionDaoMongoTest {
    @Autowired
    private DataVersionDaoMongo dataVersionDaoMongo;
    @Autowired
    private MongoOperations mongoOperations;
    private DataVersion dataVersion;

    @Rule
    public FongoRule fongoRule = new FongoRule();

    @Test
    public void findByDBAndCollection() {
       //String dbname = "mydb";
       //String collectionName = "mycollection";
       // DB db = fongoRule.getDB(dbname);
       //DBCollection collection = db.getCollection(collectionName);
       //Mongo mongo = fongoRule.getMongo();
       //collection.insert(new BasicDBObject("name", "randomName"));

       DataVersion dataVersion = new DataVersion();
       dataVersion.setDbName("DBDataVersion");
       dataVersion.setVersion("version1");
       dataVersion.setCollectionName("DataVersion");
       mongoOperations.insert(dataVersion);**strong text**  
       assertThat(dataVersionDaoMongo.findByDBAndCollection(dbname, collectionName)).isNotNull();
    }
}

这是 DataVersion 类:

@Document(collection = "DataVersion")
public class DataVersion {

    @Id
    private String id;
    private String dbName;
    private String collectionName;
    private String version;
    private boolean isCompleted;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getDbName() {
        return dbName;
    }
    public void setDbName(String dbName) {
        this.dbName = dbName;
    }
    public String getCollectionName() {
        return collectionName;
    }
    public void setCollectionName(String collectionName) {
        this.collectionName = collectionName;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public boolean isCompleted() {
        return isCompleted;
    }
    public void setCompleted(boolean isCompleted) {
        this.isCompleted = isCompleted;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result
                + ((collectionName == null) ? 0 : collectionName.hashCode());
        result = prime * result + ((dbName == null) ? 0 : dbName.hashCode());
        result = prime * result + (isCompleted ? 1231 : 1237);
        result = prime * result + ((version == null) ? 0 : version.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        DataVersion other = (DataVersion) obj;
        if (collectionName == null) {
            if (other.collectionName != null)
                return false;
        } else if (!collectionName.equals(other.collectionName))
            return false;
        if (dbName == null) {
            if (other.dbName != null)
                return false;
        } else if (!dbName.equals(other.dbName))
            return false;
        if (isCompleted != other.isCompleted)
            return false;
        if (version == null) {
            if (other.version != null)
                return false;
        } else if (!version.equals(other.version))
            return false;
        return true;
    }
}

这是 testApplicationContext 文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mongo="http://www.springframework.org/schema/data/mongo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">


    <bean name="fongo" class="com.github.fakemongo.Fongo">
        <constructor-arg value="InMemoryMongo" />
    </bean>
    <bean id="mongo" factory-bean="fongo" factory-method="getMongo" />

    <mongo:db-factory id="mongoDbFactory" mongo-ref="mongo" />

    <!-- localhost settings for mongo -->
    <!--<mongo:db-factory id="mongoDbFactory" />-->

    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongoDbFactory"/>
    </bean>

</beans>

虽然我的单元测试通过了,因为我声明dataVersion变量并在我的测试中设置 DbName、Version、CollectionName 等值并调用该方法findByDBandCollection。但我在这里没有使用 Fongo DB,我想使用它。我如何在测试中使用 Fongo db 并使用 assertThat 以便通过调用返回 DataVersionfindByDBAndCollection方法不为空?


我创建一个例子这说明了这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Junit/Fongo:如何在单元测试中使用 Fongo 来检查 NotNull 的相关文章

随机推荐

  • Java 创建新的 ObjectInputStream 块

    我正在尝试使用从 Socket 检索的 InputStream 创建一个新的 ObjectInputStream 这是我的代码 这是我的 MessageGetterSender 类的构造函数 程序未到达检查点 4 public Messag
  • Symfony2实体注释中的可配置参数

    我正在尝试跨多个数据库 其中一个属于遗留应用程序 创建一个联接 如教义博客 但是 该示例建议将数据库名称直接硬编码到模式中 出于显而易见的原因 我想避免这样做 有没有办法读取定义的参数parameters ini or config yml
  • LD_PRELOAD可以用来加载不同版本的glibc吗?

    角色阵容 big old app链接到旧版本glibc say glibc 2 12 我无法做任何事情来改变这一点 cute new addon o链接到较新的版本 glibc 2 23 This glibc 2 23位于非标准路径中 因为
  • 是否可以用交替的垂直列填充 DataGridView?

    我需要显示混合 硬编码 字符串和数据库中的数据的数据 具体来说 每个偶数列都包含不是来自数据库的字符串值 每个奇数列都包含数据 例如 第 1 列将包含数据库中的值 1 到 12 因此前两列看起来像这样 并且相同的模式重复多次 00 00 B
  • 如何修复nodejs抛出错误; ^ 错误:ENOENT:没有这样的文件或目录,请打开

    这就是我的输出的样子 我从以前的类似问题中用尽了很多方法 但没有一个对我的情况有效 我对 Node js 非常陌生 所以任何建议都会非常有帮助 C Users pushp Desktop factor gt snarkjs help int
  • Renderscript c风格指针使用性能问题

    在渲染脚本中 我使用绑定指针来迭代大图像 问题在于数组访问性能 for int i 0 i lt channels i sum input i input size mulValue 例如 当 input size 为 12288 时 完成
  • Cocoa 中的 XML-RPC 服务器

    我需要在 iPhone 上创建一个 XML RPC 服务器用于测试目的 有我可以利用的图书馆吗 查看eczarny xmlrpc在 github 上 它带有一个测试服务器
  • 在 Java 中何时使用列表而不是数组?

    在Java中 什么时候优先使用List而不是Array 我认为这个问题是相反的 什么时候应该使用数组而不是列表 只有您有特定的理由才这样做 例如 项目限制 内存问题 这并不是一个很好的理由 等 列表更容易使用 我认为 并且具有更多功能 注意
  • 通过 IoC 将依赖项提供给工厂类?

    我有一个工厂类 它决定应该实例化并返回四个可用子类中的哪一个 正如您所期望的 所有子类都实现相同的接口 public static class FooFactory public IFoo CreateFoo FooEnum enum sw
  • 如何使用 html/css 应用不透明度而不影响子元素?

    我想使用 html 和 css 来实现这一点 我尝试将容器的不透明度设置为 0 3 将盒子的不透明度设置为 1 但它不起作用 两个 div 的不透明度均为 0 3 我在这里尝试的 jsFiddle 我想要实现的效果是页面顶部出现一个弹出框
  • 使用numpy.random.normal时如何指定上限和下限

    我希望能够从只落在 0 和 1 之间的正态分布中选取值 在某些情况下 我希望能够基本上返回完全随机的分布 而在其他情况下 我希望返回落在 0 和 1 之间的值高斯的形状 目前我正在使用以下功能 def blockedgauss mu sig
  • 休息 - 404 未找到

    我正在使用 ColdFusion 10 的 RESTful Web 服务 首先 我通过 CF admin 注册了一个休息服务 C ColdFusion10 cfusion wwwroot restful 并将其命名为 IIT 现在 我有 C
  • 如何在JMeter中修改/添加Cookie?

    我对 JMeter 非常陌生 需要您帮助我了解如何修改 cookie 这是场景 我正在测试一个提供多个问题答案的评估 考试网站 当用户做出选择并点击提交按钮时 页面中的 JavaScript 会将其答案 例如 Answers BBAACDA
  • 何时使用定义

    我对测试参数的方式有点困惑 以下是下面发布的源代码中的两个示例 首先是这个 if defined DBHdl defined acct no 测试未定义参数的方法 其次 分配给 hashref 后 ptMtrRecRef ptSelHdl
  • 实施 Barabasi-Albert 方法来创建无标度网络

    我正在尝试实现一个非常简单的优先附件算法来创建无标度网络 它们的度分布遵循幂律 即 P k k g 其中 g 是指数 下面的算法应该产生指数等于 3 0 1 的度分布 但我的实现并不使指数更接近 2 5 0 1 我显然在某些地方不理解并且继
  • Java方法不改变参数对象[重复]

    这个问题在这里已经有答案了 我有一个这样的函数 public static int partition List list ListElement elemL ListElement elemR ListElement elemX elem
  • 如何在 jQuery 中仅选择标签之外的文本

    我正在尝试实施文本突出显示搜索脚本在客户的 WordPress 网站上 该脚本对网页中的原始 HTML 数据执行正则表达式搜索 将 span 标签 css 元素添加到与查询匹配的文档的任何部分 但是 我正在尝试搜索一些多级 HTML 标头等
  • 带参数的 PHP 标头位置

    是否可以将参数附加到 PHP 标头位置 我无法让它发挥作用 这种语法实际上是允许的吗 qry SERVER QUERY STRING header Location http localhost blast v2 qry 它只是不会用它的实
  • R Shiny 将来自多个动态生成的 textAreaInput 字段的用户输入存储在服务器部分的对象中

    New to shiny并为此苦苦挣扎了两天多 我创建了一个用户加载的应用程序 csv数据文件并选择一个或多个变量 其名称在应用程序中显示为复选框 当选中一个复选框时 一个新的复选框会出现在同名的下方 当它被单击时 一个新的复选框也会出现在
  • Junit/Fongo:如何在单元测试中使用 Fongo 来检查 NotNull

    我正在编写一个基本单元测试 检查返回的查询 DataVersion 类型 是否不为空 我必须确保我正在使用 Fongo 来测试我的数据库 这是回购类 Repository public class DataVersionDaoMongo e