gpt4 book ai didi

java - JUnit 测试用例与 tomcat 容器或 JVM 一起运行

转载 作者:行者123 更新时间:2023-11-29 00:01:45 29 4
gpt4 key购买 nike

我正在为我的 spring 应用程序编写 JUnit 测试用例。我在 eclipse 中使用 codepro 工具来生成测试用例。当我运行这个测试用例时,它是在 JVM 上运行的,而不是在 Tomcat 服务器上运行的。所以我想知道它如何在服务器上运行?哪个是在 JVM 或 tomcat 上运行测试用例的最佳实践?为什么?所以请建议我。代码如下。

import java.io.InputStream;
import java.util.Properties;

import javax.servlet.http.HttpSession;

import junit.framework.TestCase;
import junit.framework.TestSuite;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.bind.annotation.RequestMapping;

import com.zodiacapi.framework.business.ZodiacMobileBusinessTx;
import com.zodiacapi.framework.controller.ZodiacMobileAPIController;
import com.zodiacapi.framework.delegate.SendNotificationDelegate;
import com.zodiacapi.framework.dto.ReturnAPIMessageDTO;
import com.zodiacapi.framework.dto.UserDTO;
import com.zodiacweb.framework.cache.CacheService;
import com.zodiacweb.framework.cache.EhCacheServiceImpl;
import com.zodiacweb.framework.exception.ZodiacWebException;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:applicationContext.xml" })
public class ZodiacMobileAPIControllerTest extends TestCase {

private static final Logger logger = LoggerFactory.getLogger(ZodiacMobileAPIControllerTest.class);

@Autowired
private ZodiacMobileBusinessTx zodiabMobileBusinessTx;

public ZodiacMobileBusinessTx getZodiabMobileBusinessTx() {
return zodiabMobileBusinessTx;
}
@Test
public void testMobileLogin_1()
throws Exception {
ReturnAPIMessageDTO entities = new ReturnAPIMessageDTO();
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("login.properties");
prop.load(in);

try{
UserDTO result = zodiabMobileBusinessTx.login(prop.getProperty("username"), prop.getProperty("password"), prop.getProperty("apikey"), prop.getProperty("deviceid"), prop.getProperty("deviceModel"));


System.out.println("result of test"+result);

} catch (ZodiacWebException e) {
logger.error("Internal Server Error fetching user info", e);
entities.setStatus("false");
entities.setMessage(e.getMessage());
entities.setVersion("");

} catch (Throwable t) {

entities.setStatus("false");
entities.setMessage(t.getMessage());
entities.setVersion("");
}

}

最佳答案

对于单元测试,您通常会在 JVM 中执行它。您可能只会对在服务器中运行的应用程序执行集成/功能测试。

测试 Spring Controller (我熟悉的)的选择是:

  1. 在容器和服务器之外将 Controller 作为常规 POJO 进行测试 例如:MyController controller = new MyController())
  2. 使用 Spring Test MVC 测试 Controller 。这实际上会在您的测试期间启动 Spring。(我更喜欢此选项)参见 Unit Test Spring Controllers举一些例子。
  3. 如果您想在真实的 tomcat 实例中测试您的应用程序,您可以使用 Arquillian连同 The Arquillian Spring Extension .就学习曲线而言,最后一个选项绝对是最复杂的。但很高兴知道。(我自己还没有成功地将它与 Spring 应用程序一起使用)

关于java - JUnit 测试用例与 tomcat 容器或 JVM 一起运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34504655/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com