2016-12-02 33 views
1

我有我本来以为我可以解决现在的问题...Junit的一套系统,性能测试不工作

我正在写一些简单的测试来打一对夫妇服务...

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = Application.class) 
@WebAppConfiguration 
public class EndpointTests { 

    private static Logger log = Logger.getLogger(ApplicationController.class.getName()); 

    @Autowired 
    private WebApplicationContext context; 
    private MockMvc mockMvc; 

    @Mock 
    private ApplicationController applicationController = new  ApplicationController(); 
    static { 
     System.setProperty("audit.enabled", "false"); 
    } 

    @BeforeClass 
    public static void setupProperties() { 
     System.setProperty("audit.enabled", "false"); 
    } 

    @Before 
    public void setup() { 
     MockitoAnnotations.initMocks(this); 
     mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); 
    } 

    @Test 
    public void contextLoads() {} 

    @Test 
    public void testGetApplications() throws Exception { 
     mockMvc.perform(get("/applications/")).andExpect(status().isOk()) 
       .andDo(print()) 
       .andExpect(content().contentType(TestUtils.APPLICATION_JSON_UTF8)) 
       .andExpect(jsonPath("$.[0].name",is("XYZ"))); 
    } 

长话短说,我在运行测试时需要禁用此属性。我已经尝试在静态初始化器和@BeforeClass中设置属性,就像我在其他帖子中看到的一样,但是当它进入实际方法时,它仍然是默认的“启用”值,测试失败。我没有使用XML配置,所以更喜欢代码/注释解决方案。

对另一种方式的任何建议,我可以解决这个问题?谢谢。

UPDATE

好像每次我的集成测试运行:

@Test 
    public void testGetApplications() throws Exception { 
     mockMvc.perform(get("/applications/")).andExpect(status().isOk()) 
       .andDo(print()) 
       .andExpect(content().contentType(TestUtils.APPLICATION_JSON_UTF8)) 
       .andExpect(jsonPath("$.[0].name",is("paasport-services"))); 
    } 

它执行在调用mockMvc.perform我@Configuration类...

@Configuration 
public class AppConfiguration 
... 
... 

所以设置我的测试类中的属性值没有好处。 有什么办法可以在我的测试中设置这个属性?我不想真的创建一个单独的测试应用程序上下文,因为它只是一个属性,对于我来说,一切都一直很好。 谢谢。

回答

0

我确定有一个更优雅的解决方案,但我只是在我的测试类中的@BeforeClass中设置了一个新的系统属性。

我的审计是由一个方面处理,我只是检查我只在我的测试类中设置的属性。如果设置为true,则建议不会执行。