我正在尝试使用JUnit和Mockito对我正在构建的Spring REST Web服务进行测试.我在尝试运行JUnit测试时遇到了一个错误,但无法找到有关该问题的任何信息.堆栈跟踪列出了错误行,.andDo(print())因为我直接从spring.io教程获得该行http://spring.io/guides/tutorials/rest/3/
测试类代码:
public class TestSuite {
MockMvc mockMvc;
@Mock
RestController controller;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
this.mockMvc = standaloneSetup(controller)
.setMessageConverters(new MappingJackson2HttpMessageConverter()).build();
}
@Test
public void testREST() throws Exception {
when(controller.getThing(any(Integer.class))).thenReturn(TestFixture.getREST(1));
this.mockMvc.perform(get("/{number}", String.valueOf(number))
.accept(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isNotFound());
}}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z
at org.springframework.test.web.servlet.result.PrintingResultHandler.printAsyncResult(PrintingResultHandler.java:131)
at org.springframework.test.web.servlet.result.PrintingResultHandler.handle(PrintingResultHandler.java:80)
at org.springframework.test.web.servlet.MockMvc$1.andDo(MockMvc.java:155)
at org.company.test.TestSuite.testREST(TestSuite.java:53)`
Run Code Online (Sandbox Code Playgroud) 我想创建一个可以用两种语言查看的网站,一个LTR和一个RTL.这意味着所有内容都应以两种语言中的任何一种显示.
我的框架是Spring,我正在使用Tiles2,但我认为这个问题不是特定于框架的.
支持两种语言的显而易见的解决方案是将所有内容加倍(所有JSP,片段等),并获得适合您选择的语言的树的一部分.但这会在更改网站时导致问题(您可能忘记更新其他JSP),并且不可扩展(尝试为5或10种语言执行此操作).
我知道我可以使用属性文件来托管不同语言的字符串,但是我的网站将是一个庞大的spring:message标签集合,并且将更难维护(如果我有一个100行的段落会发生什么,这一切都进入一个属性行吗?)
是否有任何类型的框架,插件,其他,它解决了这个问题?有没有人遇到过这个问题的聪明解决方案?
我有多个程序员为javadoc提供示例,一些示例包含格式化的注释
/*
*
*/
Run Code Online (Sandbox Code Playgroud)
当我将这些示例放入javadoc注释时,示例中的注释close将关闭javadoc注释.
/**
*
* /*
* *
* */ <-- right here
*
*/
Run Code Online (Sandbox Code Playgroud)
有没有一种正确的方法来处理这个问题而不告诉每个人他们不能用这种格式写评论?
_header.html.erb
<header class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<%= link_to "sample app", root_path, id: "logo" %>
<nav>
<ul class="nav pull-right">
<li><%= link_to "Home", root_path %></li>
<li><%= link_to "Help", help_path %></li>
<% if signed_in? %>
<li><%= link_to "Users", '#' %></li>
<li id="fat-menu" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Account <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><%= link_to "Profile", current_user %></li>
<li><%= link_to "Settings", '#' %></li>
<li class="divider"></li>
<li>
<%= link_to "Sign out", signout_path, method: "delete" %>
</li>
</ul>
</li>
<% else %>
<li><%= …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用H2内存数据库为我们的Java应用程序编写一些功能测试.由于我们使用Oracle作为生产数据库,因此一些代码是用PL/SQL编写的.所以我打开了Oracle兼容模式,现在我的网址看起来像这样:jdbc:h2:mem:test;MODE=Oracle.
我遇到麻烦的实际应用程序代码看起来像这样(注意,序列和表都是在调用之前创建的):
CallableStatement = con.prepareCall(
" begin insert into profiles(" + PROFILE_FIELDS + ") " +
" values (sq_profiles.nextval, ?, ?, ?, ?, ?) " +
" returning profile_id into ?; end;");
Run Code Online (Sandbox Code Playgroud)
它失败了,我写的这个示例代码测试begin ... end;行为的错误相同:
Connection con = connectionProvider.getConnection()
con.prepareStatement("CREATE TABLE test (id INT NOT NULL)").execute()
con.prepareStatement("INSERT INTO test SELECT 1 FROM dual").execute()
con.prepareStatement("BEGIN INSERT INTO test SELECT 2 FROM dual; END;").execute()
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
Syntax error in SQL statement "BEGIN INSERT[*] INTO TEST …Run Code Online (Sandbox Code Playgroud) 我正在为我们的oracle生产数据库配置一个h2测试数据库.所有表都是模式xxx.我的数据源定义如下:
public DataSource dataSource() {
JdbcDataSource ds = new JdbcDataSource();
ds.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS xxx;SCHEMA=xxx");
ds.setUser("xxx");
ds.setPassword("xxx");
return ds;
}
Run Code Online (Sandbox Code Playgroud)
有了SCHEMA=xxx,我收到一个错误:Caused by: org.h2.jdbc.JdbcSQLException: Schema "xxx" not found; SQL statement: SET SCHEMA xxx [90079-186]
如果没有SCHEMA=xxx,我会在Hibernate尝试使用连接运行查询时收到错误,因为它不会将模式添加到表名中.虽然它在我们的oracle数据库的生产中这样做.
编辑:为了提供更多的见解,我从生产中使用的创建脚本填充我的数据库:
@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
final DataSourceInitializer initializer = new DataSourceInitializer();
initializer.setDataSource(dataSource);
initializer.setDatabasePopulator(databasePopulator());
return initializer;
}
private DatabasePopulator databasePopulator() {
final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
populator.setSeparator(";");
populator.setCommentPrefix("--");
populator.addScript(new ClassPathResource("db-schema.sql"));
populator.addScript(new ClassPathResource("db-init-data.sql"));
return populator;
}
Run Code Online (Sandbox Code Playgroud)