执行 setup() 一次解决方法导致 TestSuit 失败

发布于 2024-09-14 23:20:42 字数 1329 浏览 5 评论 0原文

我有 2 个文件:

xxxxxTest.java [参考这个]

public class xxxxxTest extends TestCase {

    // Run setup only once
    public static Test suite() {
        TestSetup setup = new TestSetup(new TestSuite(xxxxxTest.class)) {
            protected void setUp() throws Exception {
              //Some init which i need only once
            }

            protected void tearDown() throws Exception {

            }
        };
        return setup;
    }

    public void testMyFirstMethodTest() {
        assertNotNull(do stuff here);
    }
}

AllTests.java

public class AllTests {
    public static Test suite() {
        TestSuite suite = new TestSuite("Test for xxxxxx");
        //$JUnit-BEGIN$
        suite.addTestSuite(xxxxxTest.class);
        //$JUnit-END$
        return suite;
    }
}

所以,我的个人测试(xxxxxTest.java)工作正常,完全按照我的要求。当我运行我的测试套件(AllTests.java)时,它失败了,因为 init我在 xxxxxTest.java 中提供的 setup() 没有被执行。

有什么建议吗?

更新

我在 JUnit 4 中尝试了 @BeforeClass 。但是,它没有帮助,因为在我的 ssetUp() 方法中,我启动了一个嵌入式 Jetty 服务器 (server.start()),该服务器可以正常工作我发布的代码,但是当我对 @BeforeClass 执行相同操作时,它不起作用。

I have 2 files:

xxxxxTest.java
[refer this]

public class xxxxxTest extends TestCase {

    // Run setup only once
    public static Test suite() {
        TestSetup setup = new TestSetup(new TestSuite(xxxxxTest.class)) {
            protected void setUp() throws Exception {
              //Some init which i need only once
            }

            protected void tearDown() throws Exception {

            }
        };
        return setup;
    }

    public void testMyFirstMethodTest() {
        assertNotNull(do stuff here);
    }
}

AllTests.java

public class AllTests {
    public static Test suite() {
        TestSuite suite = new TestSuite("Test for xxxxxx");
        //$JUnit-BEGIN$
        suite.addTestSuite(xxxxxTest.class);
        //$JUnit-END$
        return suite;
    }
}

So, my individual test(xxxxxTest.java) works fine, exactly as I want.When i run my test suite (AllTests.java), it fails, because the init in setup() i provided in xxxxxTest.java are not being executed.

Any suggestions?

UPDATE

I tried @BeforeClass in JUnit 4. But, it didn't help because in my ssetUp() method, I start an embedded Jetty server (server.start()), the server works fine with the code I posted, but when I do the same with @BeforeClass, it does not work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往事随风而去 2024-09-21 23:20:42

在极少数情况下,我在使用 JUnit3 时也会使用 static。

在您的情况下:

  • 尝试 static{} 初始值设定项,也许它与您的静态相反初始化。
  • 如果可能,升级到 JUnit4 并使用 @BeforeClass 注释(它针对测试类运行一次)。您的其他 JUnit3 测试类也应该可以使用 JUnit4 测试运行程序运行。

In rare cases I also hacked around with static when using JUnit3.

In your case:

  • give the static{} initializer a try, maybe it works opposed to your static initialization.
  • if possible upgrade to JUnit4 and use @BeforeClass annotation (it is run once for a test-class). Your other JUnit3 test-classes should be runnable with JUnit4 test-runner also.
笨笨の傻瓜 2024-09-21 23:20:42

与 manuel 的观点类似:您需要使用 JUnit 3 吗?那么类级静态初始化器可能是您最好的选择。

否则,我建议使用 JUnit 4,它的构造可能会喜欢:

import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;


public class xxxxxTest  {

    @BeforeClass
    public static void beforeClass() {
        //Some init which i need only once
    }

    @Test
    public void testMyFirstMethodTest() {
        Assert.assertNotNull("");//do stuff here);
    }
}

Similar to manuel's point: do you -need- to use JUnit 3? Then a class-level static{} initializer might be your best bet.

Otherwise, I recommend using JUnit 4, which has a construct which would might enjoy:

import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;


public class xxxxxTest  {

    @BeforeClass
    public static void beforeClass() {
        //Some init which i need only once
    }

    @Test
    public void testMyFirstMethodTest() {
        Assert.assertNotNull("");//do stuff here);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文