我正在尝试使用Spring 3.2.1创建spring-mvc测试.在一些教程之后,我认为这将是直截了当的.
这是我的测试:
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = { JpaTestConfig.class } )
@WebAppConfiguration
public class HomeControllerTest {
@Resource
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
@Test
public void testRoot() throws Exception {
mockMvc.perform(get("/").accept(MediaType.TEXT_PLAIN)).andDo(print())
// print the request/response in the console
.andExpect(status().isOk()).andExpect(content().contentType(MediaType.TEXT_PLAIN))
.andExpect(content().string("Hello World!"));
}
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的相关pom.xml:
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>hamcrest-core</artifactId>
<groupId>org.hamcrest</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.2.1.RELEASE</version> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用liquibase配置简单的maven项目.liquibase-maven-plugin和liquibase-hibernate4的版本存在很多问题,它们不会产生大量的堆栈跟踪,但最后我几乎可以使用它.但是当我执行mvn liquibase:diff时,它以消息结束liquibase: No changes found, nothing to do.
这是我的pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pl.mlewando.ff</groupId>
<artifactId>liquibase_test</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.6.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.14.8</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<changeLogFile>src/main/resources/db/db.changelog.xml</changeLogFile>
<diffChangeLogFile>src/main/resources/db/generated-db.changelog.xml</diffChangeLogFile>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/liquibase_test?characterEncoding=utf8</url>
<username>root</username>
<password>root</password>
<referenceUrl>hibernate:spring:pl.mlewando.ff.model?dialect=org.hibernate.dialect.MySQL5InnoDBDialect</referenceUrl>
<verbose>true</verbose>
<logging>debug</logging>
</configuration>
<dependencies>
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-hibernate4</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId> …Run Code Online (Sandbox Code Playgroud) 有谁知道我在哪里可以找到Spring IDE插件与SpringSource Tool Suite STS(版本3.3.0)的最新功能比较文档?
我相信Eclipse在Kepler发布中取得了一些很好的进展(例如Maven支持正在发布),所以想知道在Eclipse Java EE Kepler中是否减少了Eclipse + Spring IDE插件与2.9.2功能比较中突出显示的STS之间的功能差距.
我一直是一个非常狂热的git用户.但是我经常注意到经验丰富的SVN用户似乎在使用git时遇到了很多问题.现在我正在寻找资源,让那些习惯长期使用SVN并养成SVN怪癖习惯的人可以使用git.
我知道有git svn速成课程,但这并不能真正提供我需要的信息.虽然这可以轻松地将常见的SVN命令映射到类似的Git命令,但人们倾向于使用更复杂的工作流,这些工作流通常不能仅通过将命令从一个工具映射到另一个工具来轻松映射.
例如,我认识的很多人通常倾向于在不同的目录中保留多个版本的版本化软件,以便能够在修订版之间轻松切换.对我来说,这似乎是所有Git通过轻松处理一个缺憾解决办法git stash,git checkout工作流程.我也注意到使用SVN的人倾向于对分支有不同的看法.而在SVN中,来自分支的所有提交完全属于Git中的那个分支(因为它们涉及该目录),实际上并不存在"来自分支的提交",因为每个分支将包括从当前分支状态可到达的所有提交.
是否有任何教程,映射这些概念,以使强制使用它的SVN用户更容易访问Git?
我可以通过maven build(liquibase:update目标)运行Liquibase changelog 而不会出现任何问题.现在,我希望Liquibase使用数据库凭据和从属性文件(db.properties)加载的URL,具体取决于所选的Maven配置文件:
|-- pom.xml
`-- src
`-- main
`-- resources
|-- local
| `-- db.properties
|-- dev
| `-- db.properties
|-- prod
| `-- db.properties
`-- db-changelog-master.xml
`-- db-changelog-1.0.xml
Run Code Online (Sandbox Code Playgroud)
3个属性文件中的每一个都如下所示:
database.driver = oracle.jdbc.driver.OracleDriver
database.url = jdbc:oracle:thin:@<host_name>:<port_number>/instance
database.username = user
database.password = password123
Run Code Online (Sandbox Code Playgroud)
现在,而不是在POM文件本身中定义这些属性(正如在这个问题的接受答案中所解释的,liquibase使用带有两个数据库的maven不起作用),我希望它们从外部属性文件加载.我试过不同的方法无济于事:
1.我resource在POM文件中使用了Maven的元素:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<changeLogFile>db.changelog-master.xml</changeLogFile>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<id>local</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources/local</directory>
</resource> …Run Code Online (Sandbox Code Playgroud) 我最近一直在尝试使用带有多个REF_CURSOR结果集的JPA 2.1 NamedStoredProcedureQuery注释,到目前为止我试图使用Hibernate版本5.1.3-FINAL和Oracle 11g(尝试过的JDBC驱动程序版本:10.2)一直没有成功. 0.2和11.2.0.3).
我认为在阅读JPA 2.1规范 3.10.17.1命名存储过程查询后,应该可以这样做,其中包含以下段落:
存储过程可能返回多个结果集.与本机查询一样,结果集的映射可以根据resultClasses或resultSetMappings注释元素指定.如果有多个结果集,则假定它们将使用相同的机制进行映射 - 例如,所有结果类映射都是映射,或者全部通过一组结果集映射进行映射
如果我使用的方法对于这个版本的Hibernate无效,或者我错过了一个关键的配置步骤,下面是采取的方法,希望有人能够指出我正确的方向:
@NamedStoredProcedureQuery(name = "multiResultSetExample", procedureName = "PACKAGE.p_stored_procedure", resultClasses = {ResultEntityOne.class, ResultEntityTwo.class}, parameters = {
@StoredProcedureParameter(mode = ParameterMode.REF_CURSOR, type = void.class),
@StoredProcedureParameter(mode = ParameterMode.REF_CURSOR, type = void.class),
@StoredProcedureParameter(mode = ParameterMode.IN, type = String.class)
}
)
@Entity
public class ResultEntityOne {
…
}
Run Code Online (Sandbox Code Playgroud)
上面的查询调用如下,但在检查结果时,只映射上面NamedStoredProcedureQuery resultClasses属性中指定的第一个类:
EntityManagerFactory entityManagerFactory = (EntityManagerFactory) ctx.getBean("entityManagerFactory");
EntityManager entityManager = entityManagerFactory.createEntityManager();
StoredProcedureQuery storedProcedureQuery = entityManager.createNamedStoredProcedureQuery("multiResultSetExample ");
storedProcedureQuery.setParameter(3, "PARAM");
List resultList = storedProcedureQuery.getResultList(); // only returns …Run Code Online (Sandbox Code Playgroud) 我有一个控制器,它响应一个调用返回XML数据.下面是代码
@RequestMapping(value = "/balance.xml",method = RequestMethod.GET,produces="application/xml")
public AccountBalanceList getAccountBalanceList(@RequestParam("accountId") Integer accountId)
{
AccountBalanceList accountBalanceList = new AccountBalanceList();
List<AccountBalance> list = new ArrayList<AccountBalance>();
list = accountService.getAccountBalanceList(accountId);
accountBalanceList.setList(list);
return accountBalanceList;
}
Run Code Online (Sandbox Code Playgroud)
accountBalanceList用xml注释.我从这个调用得到的响应是这样的
<points>
<point>
<balance>$1134.99</balance>
<lots>10000.0</lots>
<onDate>2012-11-11 15:44:00</onDate>
</point>
</points>
Run Code Online (Sandbox Code Playgroud)
我想为这个控制器调用编写集成测试.我知道如何使用JSON响应测试控制器,但我不知道如何测试响应是否在XML中.任何帮助将不胜感激.
问候
model-view-controller integration-testing spring-mvc spring-mvc-test