JUnit5用户手册~嵌套测试

嵌套测试

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.EmptyStackException;
import java.util.Stack;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

@DisplayName("A stack")
class TestingAStackDemo {

  Stack stack;

  @Test
  @DisplayName("is instantiated with new Stack()")
  void isInstantiatedWithNew() {
      new Stack<>();
  }

  @Nested
  @DisplayName("when new")
  class WhenNew {
      @BeforeEach
      void createNewStack() {
          stack = new Stack<>();
      }

      @Test
      @DisplayName("is empty")
      void isEmpty() {
          assertTrue(stack.isEmpty());
      }

      @Test
      @DisplayName("throws EmptyStackException when popped")
      void throwsExceptionWhenPopped() {
          assertThrows(EmptyStackException.class, stack::pop);
      }

      @Test
      @DisplayName("throws EmptyStackException when peeked")
      void throwsExceptionWhenPeeked() {
          assertThrows(EmptyStackException.class, stack::peek);
      }

      @Nested
      @DisplayName("after pushing an element")
      class AfterPushing {
          String anElement = "an element";

          @BeforeEach
          void pushAnElement() {
              stack.push(anElement);
          }

          @Test
          @DisplayName("it is no longer empty")
          void isNotEmpty() {
              assertFalse(stack.isEmpty());
          }

          @Test
          @DisplayName("returns the element when popped and is empty")
          void returnElementWhenPopped() {
              assertEquals(anElement, stack.pop());
              assertTrue(stack.isEmpty());
          }

          @Test
          @DisplayName("returns the element when peeked but remains not empty")
          void returnElementWhenPeeked() {
              assertEquals(anElement, stack.peek());
              assertFalse(stack.isEmpty());
          }
      }
  }
}

JUnit5用户手册~嵌套测试_第1张图片

你可能感兴趣的:(单元测试,Java,junit,java,单元测试)