我需要为一个设计很差的旧应用程序编写JUnit测试,并将大量错误消息写入标准输出.当getResponse(String request)方法行为正确时,它返回XML响应:
@BeforeClass
public static void setUpClass() throws Exception {
Properties queries = loadPropertiesFile("requests.properties");
Properties responses = loadPropertiesFile("responses.properties");
instance = new ResponseGenerator(queries, responses);
}
@Test
public void testGetResponse() {
String request = "<some>request</some>";
String expResult = "<some>response</some>";
String result = instance.getResponse(request);
assertEquals(expResult, result);
}
Run Code Online (Sandbox Code Playgroud)
但是当它得到格式错误的XML或者不理解它返回的请求并将null一些东西写入标准输出时.
有没有办法在JUnit中断言控制台输出?要抓住像这样的案例:
System.out.println("match found: " + strExpr);
System.out.println("xml not well formed: " + e.getMessage());
Run Code Online (Sandbox Code Playgroud) 有没有办法设置进程可以在Windows XP中使用的系统范围的内存限制?我有几个不稳定的应用程序,大部分时间都可以正常工作,但可以点击一个错误,导致在几秒钟内吃掉整个记忆(或者至少我认为就是这样).这导致硬复位,因为Windows变得完全没有响应,我失去了工作.
我希望能够像Linux上的/ etc/limits那样做 - 例如设置M90(为单个用户设置90%的最大内存来分配).因此,无论如何,系统都会获得剩余的10%.
是否可以在不使用方法参数的情况下通过Spring Data JPA中的布尔属性进行查询?
基本上我希望这可以在不使用自定义@Query注释的情况下工作:
@Query("SELECT c FROM Entity c WHERE c.enabled = true")
public Iterable<Entity> findAllEnabled();
Run Code Online (Sandbox Code Playgroud) 假设我们有一个项目集合:
class Item {
public String title;
public int price;
}
List<Item> list = getListOfItems();
Run Code Online (Sandbox Code Playgroud)
我想从Guava库中获得一个具有最大价格的物品(订购,我推测).我的意思是类似于这个Groovy代码:
list.max{it.price}
Run Code Online (Sandbox Code Playgroud)
我怎么做?效率如何?
我有几个项目是在不同的分支上开发和发布的,即开发和发布.这个过程运行得很顺利,但不幸的是它有一些缺点,我一直在想是否有更好的版本控制方案适用于我的情况.
主要开发发生在一个开发分支(即Subversion 主干,但并不重要)开发人员团队提交他们的更改.在构建和打包工件之后,Jenkins将它们部署到maven存储库和开发集成应用程序服务器.这是一个开发快照,基本上只是一个功能分支,包含一个公共分支上的所有开发功能:
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>D.16-SNAPSHOT</version>
Run Code Online (Sandbox Code Playgroud)
当QA团队完成并请求某个特定业务更改时,此单个更改将合并到发布分支(分支/发布).Jenkins将生成的工件部署到QA应用程序服务器:
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>R.16-SNAPSHOT</version>
Run Code Online (Sandbox Code Playgroud)
然后有一个版本通过发布分支版本的软件上的maven-release-plugin发生(它创建了一个维护标签/分支,用于快速修复bug).(R.16-SNAPSHOT => R.16)
开发和发布分支机构目前分别为D.16-SNAPSHOT和R.16-SNAPSHOT版本.这允许在maven存储库中分离工件,但是使用依赖于标准maven版本控制样式的不同maven机制产生问题.这也打破了OSGI版本.
现在,您如何在这样的方案中命名和编辑maven工件?有没有更好的办法?也许我可以对maven结构进行一些更改,而不仅仅是更改版本控制和命名方案?但我需要将开发和QA(发布)SCM分支分开.
"开发"/"生产"的maven分类器是否是一个合理的选择?
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>16-SNAPSHOT</version>
<classifier>D</classifier>
Run Code Online (Sandbox Code Playgroud) 是否可以覆盖JPA/Hibernate中的表名,以便为所有项目实体添加公共前缀?例如,能够通过"JBPM5_"前缀为所有JBPM 5表添加前缀.
接受答案的示例:
public class JBPM5NamingStrategy extends ImprovedNamingStrategy {
public String classToTableName(String className) {
return StringHelper.unqualify(className);
}
public String propertyToColumnName(String propertyName) {
return propertyName;
}
public String tableName(String tableName) {
return "JBPM5_" + tableName;
}
public String columnName(String columnName) {
return columnName;
}
public String propertyToTableName(String className, String propertyName) {
return "JBPM5_" + classToTableName(className) + '_'
+ propertyToColumnName(propertyName);
}
}
Run Code Online (Sandbox Code Playgroud) 我想在配置文件中存储html选择框的源代码.这些包含一个冗长的字符串,不经常更改(但偶尔会改变):
我已经使用了commons-configuration.是否可以在某种配置对象(XMLConfiguration,HierarchicalConfiguration等)中使用相同的属性键存储它们?我的意思是能够使用类似于getStringArray()(或列表)的界面一次性检索它们吗?例:
// reject.reason = Lorem ipsum sit amet nr. 1
// reject.reason = Lorem ipsum sit amet nr. 2
// reject.reason = Lorem ipsum sit amet nr. 3
// reject.reason = Lorem ipsum sit amet nr. 4
config.getStringArray(reject.reason)
Run Code Online (Sandbox Code Playgroud)
我不想让它们在同一条线上分开,因为,首先,原因是冗长的,其次,有很多原因(> 10).
我也不想将它们存储在枚举中,b/c如果不重新编译代码就无法更改它们.
有关如何实现这一目标的任何提示?
我正在尝试将Spring迁移XmlApplicationContext到AnnotationConfigApplicationContext(更多信息:基于Java的容器配置).
一切都很完美,但我不知道如何创建一个HttpInvoker客户端.XML配置如下:
<bean id="httpInvokerProxy" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="http://remotehost:8080/remoting/AccountService"/>
<property name="serviceInterface" value="example.AccountService"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
Java配置应该如何?我还需要这个工厂豆吗?我认为应该能够使用此配置方法在没有此包装器的情况下实例化客户端.
这(不知何故)对我不好:
public @Bean AccountService httpInvokerProxy() {
HttpInvokerProxyFactoryBean proxy = new HttpInvokerProxyFactoryBean();
proxy.setServiceInterface(AccountService.class);
proxy.setServiceUrl("http://remotehost:8080/remoting/AccountService");
proxy.afterPropertiesSet();
return (AccountService) proxy.getObject();
}
Run Code Online (Sandbox Code Playgroud) 我不确定这是否是绝对最好的地方,但我认为答案的概率最高(因为主题).
有没有人遇到过Java语言规范的mobi(亚马逊Kindle)版本?我知道我可以在Kindle上阅读PDF文件,但与mobi相比,它的体验更少.
我想知道它是否只是我或者是Spring的Java配置的大多数例子有缺陷吗?比如这里:
http://spring.io/blog/2008/03/27/spring-java-configuration-what-s-new-in-m3 http://spring.io/blog/2013/07/18/javaconfig-support -in最弹簧工具套件
注意他们如何注入豆子?他们直接使用方法,例如:new OrderRepository(dataSource())here:
@Configuration
public class ApplicationConfig {
public @Bean OrderRepository orderRepository() {
return new OrderRepository(dataSource());
}
public @Bean DataSource dataSource() {
// instantiate and return an new DataSource ...
}
}
Run Code Online (Sandbox Code Playgroud)
这让我想到 - 如果两次使用它会不会创建两个对象?有效地绕过Spring的单身保证?他们为什么不注入豆类呢?因为依赖框架被设计为首先工作.
我们来做快速测试吧.以这两个类为例--TestParent和TestedChild.家长接受一个孩子:new TestParent(new TestedChild()).我们将在一分钟内制作单身豆.
public class TestedChild { }
public class TestParent {
private TestedChild child;
public TestParent(TestedChild child) {
this.child = child;
}
public TestedChild getChild() { return child; }
}
Run Code Online (Sandbox Code Playgroud)
我想看到的是,如果我们实际上可以获得在上下文初始化期间创建的两个不同的TestedChild实例.我们现在配置我们的单例bean:
@Configuration
public class TestInjectionConfig {
@Bean(name …Run Code Online (Sandbox Code Playgroud)