2016-12-02 70 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,則建議不會執行。