首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以漂亮的方式使用junit 5组测试(收集用户案例)

如何以漂亮的方式使用junit 5组测试(收集用户案例)
EN

Stack Overflow用户
提问于 2020-06-28 17:01:29
回答 2查看 2.7K关注 0票数 2

因为测试方法有很多用例,如何收集这些用例呢?

例如jest javascript单元测试

代码语言:javascript
复制
describe('test methon', () => {
  test('user case one', () => {
    //test code
  });

  test('user case two', () => {
    //test code
  });

  test('user case three', () => {
    //test code
  }); 

  test(...) 
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-28 18:02:32

我不知道在JUnit5中有任何东西看起来像你所展示的javascript中的测试那样富有表现力和简洁。但至少有一件事需要考虑,这将允许您以类似的方式对测试进行分组。

它是@Nested注释。它允许您将一组测试分组到一个逻辑组中。一旦执行了测试包,就更容易导航和了解哪些测试组通过了/失败了。如果您的JUnit测试用例类中有一大组测试,这将非常有用。下面是一个示例,展示了它的外观:

代码语言:javascript
复制
public class YourTestCase {
    …

    @Nested
    @DisplayName("Tests for my method")
    class MyMethodUseCases {
        @Test
        void testUseCase1() {
            ...
        }

        @Test
        void testUseCase2() {
            ...
        }

        @Test
        void testUseCase3() {
            ...
        }
    }

如果您的测试组共享一些在执行测试之前需要设置的上下文,那么您也可以考虑使用一个特殊的JUnit运行器,比如HierarchicalContextRunner。这不是标准JUnit的一部分,而是一个自定义扩展。

最后,如果用例之间唯一的区别是数据输入,那么您可以考虑使用@ParametrizedTest注释。它允许您编写一个测试并使用多个数据输入执行它。

票数 8
EN

Stack Overflow用户

发布于 2020-06-29 13:38:30

由于JUnit 5是所有类型测试引擎的platform,因此您可以从许多方法/引擎中选择来指定您的测试。按照您绘制的方向运行的引擎是Specy。下面是文档中的一个示例:

代码语言:javascript
复制
class StackSpec extends ScalaSpecsy {
  val stack = new scala.collection.mutable.Stack[String]
 
  "An empty stack" >> {
 
    "is empty" >> {
      assertTrue(stack.isEmpty)
    }
    "After a push, the stack is no longer empty" >> {
      stack.push("a push")
      assertFalse(stack.isEmpty)
    }
  }
 
  "When objects have been pushed onto a stack" >> {
    stack.push("pushed first")
    stack.push("pushed last")
 
    "the object pushed last is popped first" >> {
      val poppedFirst = stack.pop()
      assertThat(poppedFirst, is("pushed last"))
    }
    "the object pushed first is popped last" >> {
      stack.pop()
      val poppedLast = stack.pop()
      assertThat(poppedLast, is("pushed first"))
    }
    "After popping all objects, the stack is empty" >> {
      stack.pop()
      stack.pop()
      assertTrue(stack.isEmpty)
    }
  }
}

请参阅此list of 3rd party test engines

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62620370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档