看一下 的实例变量,MockMvc
或许就能推断出答案。
static String MVC_RESULT_ATTRIBUTE = MockMvc.class.getName().concat(".MVC_RESULT_ATTRIBUTE");
private final TestDispatcherServlet servlet;
private final Filter[] filters;
private final ServletContext servletContext;
private RequestBuilder defaultRequestBuilder;
private List<ResultMatcher> defaultResultMatchers = new ArrayList<ResultMatcher>();
private List<ResultHandler> defaultResultHandlers = new ArrayList<ResultHandler>();
实例/类变量MVC_RESULT_ATTRIBUTE
和TestDispatcherServlet
是线程安全的,filters
并且servletContext
仅在初始化期间设置。
filters
并且servletContext
也应该是线程安全和无状态的。defaultRequestBuilder
,defaultResultMatchers
并且defaultResultHandlers
有一个setter方法。从技术角度来看,MockMvc
它不是线程安全的,不应该被重用。这些设置器是包私有的,MockMvc
实例只能通过MockMvcBuilders
. 因此,您不能在MockMvc
之后操作实例,以便它实际上可以在多个测试中重新使用。