【问题标题】:Unit testing parts of the application that use Thread Local对使用 Thread Local 的应用程序部分进行单元测试
【发布时间】:2012-02-29 11:40:46
【问题描述】:

我正在尝试在 Web 应用程序中实现单元测试,其中某些部分使用 ThreadLocal。

我不知道如何进行测试。

看起来 Junit 使用单个线程(即主线程)运行所有测试。

我需要能够为我的 ThreadLocal 变量分配不同的值。

有没有人遇到过这种情况?大家有什么推荐的。

【问题讨论】:

    标签: java unit-testing junit thread-local


    【解决方案1】:

    Groboutils 支持运行多线程测试,这将允许您测试 ThreadLocal 变量。

    http://groboutils.sourceforge.net/testing-junit/using_mtt.html

    【讨论】:

      【解决方案2】:

      我只是在我的单元测试中启动线程。

      我建议您使用Futures 并使用ThreadPoolExecutor 执行它们。

      【讨论】:

      • 这不会影响您测试的事务性质吗?我的理解是事务绑定到当前的执行线程。我说的是春季事务性单元测试。
      【解决方案3】:

      用超时来装饰各自的测试方法可能就足够了,即@Test(timeout=100)。请注意 Test::timeout 中的“线程安全警告”,尤其是在使用 @BeforeClass 和 @After 注释时。

      【讨论】:

        猜你喜欢
        • 2012-03-21
        • 2011-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-01
        • 2016-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多