gpt4 book ai didi

Java 单例设计模式

转载 作者:行者123 更新时间:2023-12-01 10:14:40 25 4
gpt4 key购买 nike

有人可以解释一下我的 Junit 如何通过下面的单例实现成功通过

EagerInitializations.java(单例)

package com.r.patterns.design;

public class EagerInitializations {

private final String NAME="SINGELTON";

private static final EagerInitializations INSTANCE=CreateEagerInitializations();

private static EagerInitializations CreateEagerInitializations(){

System.out.println("step constructor");
return new EagerInitializations();
}

public final static EagerInitializations getInstance(){
System.out.println("step INSTANCE");
return INSTANCE;

}

public String getNAME() {
return NAME;
}
}

EagerInitializationsTest.java(JUnit 测试)

package com.r.patterns.design;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class EagerInitializationsTest {

@Test(expected = ClassNotFoundException.class)
public void testSingleton() throws ClassNotFoundException {

Class.forName("EagerInitializations");
EagerInitializations EI=null;

assertEquals(EI.getNAME(),new String("SINGELTON"));

}

}

最佳答案

此测试成功通过的唯一方法是调用

Class.forName("EagerInitializations");

抛出 ClassNotFoundException,因为您在 @Test 注释中指定了该异常。

测试最后一行中的断言不会被评估,因为异常被 JUnit 运行程序捕获,导致测试在到达该行之前通过。

我建议在测试中设置一个断点,并通过 IDE 中的代码进行调试,以更好地了解正在发生的情况。

关于Java 单例设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35971751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com