当前位置: 首页 > 知识库问答 >
问题:

JUnit:如何使用获取类实例断言

姬阳曜
2023-03-14

我有以下类桥联图:

public class BridgeMaps {
    private static final BridgeMaps INSTANCE = new BridgeMaps();

    private Map<String, String> docTypeMap;
    private Map<String, String> docBaseMap;
    private Map<String, String> tempFolderIdMap;
    //....

    //constructor for the class to initialize the Maps      
    private BridgeMaps(){
        docTypeMap = new HashMap<String, String>();
        docBaseMap = new HashMap<String, String>();
        docBaseMap = new HashMap<String, String>();
        //....rest of the code

    }


    //Get the class instance 
    //@return BridgeMaps - Returns the BridgeMaps Instance
    public static final BridgeMaps get(){
        return INSTANCE;
    }
}

我将JUnit测试用例编写为:

public class BridgeMapsTest {

    private static BridgeMaps bridgeMaps;
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        Constructor<BridgeMaps> b = BridgeMaps.class.getDeclaredConstructor(new Class[0]);
        b.setAccessible(true);
        bridgeMaps = b.newInstance(new Object[0]);
    }

    @Test
    public void testGet() {
        //("Not yet implemented");
    }
}

但我不知道该断言什么:

assertWhat(bridgeaps.get ());

如何在testGet()方法中断言类的实例?

任何帮助都将不胜感激。非常感谢。


共有2个答案

慕凡
2023-03-14
匿名用户

使用断言相同(a, b)

断言两个对象引用同一个对象。

还可以考虑只执行assertSame(bridgeMaps.get(),bridgeMaps)。get())而不是那种反射式的扑克。

唐弘和
2023-03-14

我建议使用assertThis。

此断言适用于Hamcrest匹配器,例如notNullValue()。

允许您像这样重写断言:

assertThat(BridgesMap.get(), notNullValue(BridgeMaps.class))

此代码断言调用该静态get方法将返回一个非空值。

换句话说:这个调用将触发ctor,并运行其背后的所有代码。你可以确信你的单身是“真实的”,而不是空的;分别在被访问时导致异常。

 类似资料:
  • 我试着 我在调试时获得和是。 如何在使用时断言大于条件

  • rank ▲ ✰ vote url 56 390 59 554 url 如何获取实例的类名 如何才能获取一个实例对象的类名? 我想或许the inspect module可以实现,但是好像还没有发现什么能帮我的.或许可以分析__class__成员,但是我不知道怎么用. 你试没试类里的__name__属性?比如x.__class__.__name__或许可以得到你想要的 >>> import ite

  • 问题内容: 我正在尝试使用MBean 绑定服务类的实例。 已经定义了我们要在代码中使用的。这就是它的意思。 我正在尝试通过以下代码访问此文件, 现在我有了MBean信息。我想要一个在MBean中定义的对象的实例。可能吗 ? 我知道一种方法,我们可以从MBean Info中获取类名称,也可以获取用于构造实例的属性。有什么更好的方法吗? 问题答案: 正如skaffman所指出的,您不能直接获取线程池的

  • 我有一个测试步骤,其中包含两个断言。 非SOAP错误 包含。条件是响应应包含“消息发送成功” 现在我有一个Groovy脚本,从那里我执行这个测试步骤。使用这个Groovy脚本,我需要打印断言名称、值和状态。以下是我编写的代码: 但在输出中,它显示如下: 如您所见,我可以打印断言名称和状态,但不能打印“包含”断言的值。请帮助我如何获取特定断言的值。 提前谢谢。

  • 问题内容: 我有这些值来自测试 我尝试 我得到了,关于调试是。 我怎样才能断言超越使用条件 问题答案: 只是您的操作方式。还有一个过载,如果发生故障,消息是;如果要打印某某某物的大小不超过某某某物的大小,则可以使用它。 您也可以添加依赖项以使用匹配器。参见https://code.google.com/p/hamcrest/wiki/Tutorial: 这给出了类似的错误:

  • 问题内容: 如何获得要打印到[标准输出]的JUnit断言的结果? 我有一些像这样的测试: 这是我希望获得的打印输出格式: 是否可以使用和进行此操作?或是否存在任何,方法? 问题答案: 首先,您有两个问题,而不是一个。断言失败时,将引发异常。这样可以防止检查超过此点的任何断言。为了解决这个问题,您需要使用ErrorCollector。 其次,我不认为JUnit内置了任何方法来执行此操作。但是,您可以