Java 如何编写单例类JUnit测试用例

Java 如何编写单例类JUnit测试用例,java,junit,Java,Junit,我是Junit的新手,我在下面的代码中编写了单例类Junit测试用例,但我遇到了异常,循环的第二个方法没有涵盖,有人能帮我解决吗 独生子女 错误 如果您使用的是Maven,那么可以在pom.xml中指定仅在单个线程上运行的测试类。这是在Java中使用单例运行单元/集成测试的更简单、更安全的方法之一。您可以在pom的插件部分执行此操作: 1. 假的 班级 假的 没有一个 单线程测试 测试 测试 */YourTestClassName.java 1. 在哪里创建MSA实例?这是完整的代码吗?我更新

我是Junit的新手,我在下面的代码中编写了单例类Junit测试用例,但我遇到了异常,循环的第二个方法没有涵盖,有人能帮我解决吗

独生子女 错误
如果您使用的是Maven,那么可以在pom.xml中指定仅在单个线程上运行的测试类。这是在Java中使用单例运行单元/集成测试的更简单、更安全的方法之一。您可以在pom的插件部分执行此操作:


1.
假的
班级
假的
没有一个
单线程测试
测试
测试
*/YourTestClassName.java
1.

在哪里创建MSA实例?这是完整的代码吗?我更新了我的代码请现在查看。不要使用
==
。或者更好的方法是,使用
assertEquals
,以便在测试失败时获得有用的输出。这不是我问题的答案,我更新了我的代码。请不要根据收到的答案修改您的原始帖子,这真的很让人困惑。
 public class MSA {
    private static final _msa = new MSA(); // TA is a singleton
    private ArrayList<MSThread> MSThreads = new ArrayList<MSThread>();

    private String msaInfo = null;

        public String getMsaInfo() {
            return msaInfo;
        }

        public void setMsaInfo(String msaInfo) {
            this.msaInfo = msaInfo;
        }

        private MSA() {}

        public static MSA getInstance() {
            return _msa;
        }

       public void shutdown() {
        for (MSThread t: MSThreads) {
            t.shutdown();
        }
    }
  @Test
        public void setMsaInfoTest() throws Exception{
            MSA fixture = MSA.getInstance();
            fixture.setMsaInfo("sample");
            assertTrue(fixture.getMsaInfo() == "sample");
        }

  @Test
    public void testShutdown_1()
        throws Exception {      
        MSA fixture = MSA.getInstance();
        fixture.shutdown();
    }
java.lang.AssertionError
    at org.junit.Assert.fail(Assert.java:86)
    at org.junit.Assert.assertTrue(Assert.java:41)
    at org.junit.Assert.assertTrue(Assert.java:52)
    at com.verizon.dtix.microsvcagent.MSATest.setMsaInfoTest(MSATest.java:131)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)