小编Bra*_*rad的帖子

如何使用不同的参数验证多个方法调用

我有以下方法,我希望验证行为

public void methodToTest( Exception e, ActionErrors errors ) {

    ...
        errors.add( "exception.message", 
                    ActionMessageFactory.createErrorMessage(e.toString() ));

        errors.add( "exception.detail",
                    ActionMessageFactory.createErrorMessage(e.getStackTrace()[0].toString() ));

    ...
}
Run Code Online (Sandbox Code Playgroud)

在我的@Test类中,我希望做这样的事情,以验证errors.add()是用"exception.message"调用,再用"exception.detail"调用

verify(errors).add(eq("exception.message"), any(ActionError.class));
verify(errors).add(eq("exception.detail"), any(ActionError.class));
Run Code Online (Sandbox Code Playgroud)

但Mockito抱怨​​如下

Argument(s) are different! Wanted:
actionErrors.add(
    "exception.message",
    <any>
);

Actual invocation has different arguments:
actionErrors.add(
    "exception.detail",
    org.apache.struts.action.ActionError@38063806
);
Run Code Online (Sandbox Code Playgroud)

我怎么能告诉Mockito检查这两个值?

java mockito

99
推荐指数
6
解决办法
7万
查看次数

使用Deprecated Hamcrest方法的替代方法是()?

我现在使用以下代码来断言一个boolean值,但是该方法org.hamcrest.Matchers.is()已被弃用.

assertThat(someValue, is(false));
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的替代语法来测试布尔值而不求助于assertTrue()给出不良的失败消息,如"java.lang.AssertionError"


收到评论/答案后编辑

我最初的担忧是因为Eclipse将以下import语句显示为已弃用

在此输入图像描述

在查看Hamcrest API文档时,该is()方法有3个重载变体,其中只有一个被弃用.

因此,为了澄清来自@mark的评论和来自@matt的答案is(),我在上面发布的使用是有效的而不是弃用的.

java unit-testing hamcrest

51
推荐指数
3
解决办法
3万
查看次数

如何在Angular 2应用程序中显示SSRS报告

我一直在梳理互联网,以获得如何以角度2显示报告的一些线索.到目前为止,我还没有找到任何我可以依赖的东西.如果有人可以帮助我,我将非常感激.

reporting-services angular

11
推荐指数
1
解决办法
8199
查看次数

解释如何将lambda分配给Iterable

我在这篇文章中遇到了一些聪明的代码,用于将Iterator转换为来自Karol的Stream .我必须承认,我不完全理解如何Iterable在以下代码中将lambda分配给该类型...

static <T> Stream<T> iteratorToFiniteStream(final Iterator<T> iterator) {
    final Iterable<T> iterable = () -> iterator;
    return StreamSupport.stream(iterable.spliterator(), false);
}
Run Code Online (Sandbox Code Playgroud)

我决定编写自己的小测试以确保它编译和执行,并且确实如此.

public void printsStream_givenIterator()
{
    Iterator<String> iterator = Arrays.asList("a", "b", "c").iterator();
    final Iterable<String> iterable = () -> iterator;
    StreamSupport.stream(iterable.spliterator(), false).forEach(s -> System.out.println(s));
}

// prints: abc
Run Code Online (Sandbox Code Playgroud)

我的理解是lambda () -> iterator充当供应商的职能.

Iterable不是FunctionalInterface,那么如何为它分配这个lambda?

java lambda java-8

9
推荐指数
2
解决办法
3321
查看次数

是否可以根据Eclipse Java内容的内容更改Eclipse Java Editor中的一行文本的颜色?

特别是为了编辑Java代码,我想知道我是否可以改变以LOG.表示日志语句的字符串开头的任何代码行的文本颜色.

在这个例子中,我希望能够使LOG语句全部显示为灰色.在阅读大量记录的代码时,它会有所帮助.

public class Foo
{
    private static final Logger LOG = LoggerFactory.getLogger(Foo.class);

    public void doSomething() {
        LOG.info("About to do something");

        // code
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能比识别单行更困难,因为日志记录可以分成多行,和/或甚至包含在if(LOG.isDebugEnabled) {...}块中.

Visualy我希望这些LOG语句/块看起来像// comments/**/的默认颜色

java eclipse

7
推荐指数
1
解决办法
578
查看次数

如何使用Spring + DBUnit + JUnit配置mutliple事务管理器

简而言之

我的命令行Java应用程序将数据从一个数据源复制到另一个数据源而不使用XA.我已经配置了两个单独的数据源,并希望能够回滚两个数据源上的数据的JUnit测试.我使用DBUnit将数据加载到"源"数据库中,但我不能让它回滚.我可以让"目标"数据源回滚.

我的守则

鉴于此配置......

<tx:annotation-driven />

<!-- note the default transactionManager name on this one -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource"     ref="dataSourceA" />
</bean>

<bean id="transactionManagerTarget" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource"     ref="dataSourceB" />
</bean>
Run Code Online (Sandbox Code Playgroud)

这段代码......

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:resources/spring-context.xml",
                                "classpath:resources/spring-db.xml"})  
@Transactional
@TransactionConfiguration(transactionManager = "transactionManagerTarget", defaultRollback = true) 
public class MyIntegrationTest {

    @Autowired
    private MyService service;

    @Autowired
    @Qualifier("dataSourceA")
    private DataSource dataSourceA;

    private IDataSet loadedDataSet;

    /**
     * Required by DbUnit
     */
    @Before
    public void setUp() throws Exception {
        SybaseInsertIdentityOperation.TRUNCATE_TABLE.execute(getConnection(), getDataSet());
        SybaseInsertIdentityOperation.INSERT.execute(getConnection(), getDataSet());
    }

    /**
     * Required …
Run Code Online (Sandbox Code Playgroud)

junit spring dbunit spring-transactions

5
推荐指数
1
解决办法
9271
查看次数

如何在Sybase ASE中使用单个INSERT语句插入多个记录

如本文所示,此功能在MySQL中可用,并且根据Sybase文档也应该受到支持,但Sybase不提供有用的示例,因此您必须解释以下内容:

语法1使用指定的表达式列值插入单行或多行.如果指定了多行,则由其他括号分隔

因此我将"附加括号"解释为期望以下代码起作用

create table #tmp_codes (
    code varchar(12) NULL
)

insert into #tmp_codes (code) 
values
    ('AAA'),
    ('BBB'),
    ('CCC')
Run Code Online (Sandbox Code Playgroud)

但它有错误

Incorrect syntax near ',' on line 7
Run Code Online (Sandbox Code Playgroud)

我正在使用Sybase ASE 15,并且看不到在此支持页面上为INSERT语句插入多行的任何引用

Sybase是否提供此功能?

sybase-ase

2
推荐指数
1
解决办法
1万
查看次数

Javascript getElementByID().innerHTML()不起作用

我是Javascript的新手,由于某些原因我无法使用以下代码,这让我发疯了!

它的

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="description" content="test" />
    <meta name="keywords" content="test" />
    <meta name="robots" content="index,follow" />
</head>

<body>
    <h1>test</h1>
<p id="demo">something</p>

<button type="button" onclick="myFunction();">Try it</button>

<script type="text/javascript">
        function myFunction() {
            document.getElementByID("demo").innerHTML = "testttt";
        }
    </script>


</body>
</html>
Run Code Online (Sandbox Code Playgroud)

有谁知道这个问题?

javascript

1
推荐指数
1
解决办法
1万
查看次数

发生异常调用方法NotesView.FTSearchSorted

我试图在SSJS中使用视图对象的FTSearchSorted方法.我有基础视图的第一列按升序排序.我尝试了所有不同的参数.它总是给出异常,除非我只将搜索查询作为参数.多米诺版本是8.5.3 FP 2.有什么建议吗?

lotus-domino xpages xpages-ssjs

1
推荐指数
1
解决办法
352
查看次数

使用带有 spring-boot 的共享 JmsTransactionManager 在没有 XA 的情况下在同一代理上读取/写入消息

我有一个 spring-boot 服务,可以读取和写入同一个 IBM MQ 消息代理。该进程是独立的,不在应用程序容器内运行。我想实现“共享事务资源”模式,这样我就不需要配置任何 JTA/XA 事务管理。我的工作顺利,但是以下边缘情况不会回滚消息发布。读取已回滚,但发布仍已提交。

假设MessageListener 收到一条消息

并且使用相同的 JMS ConnectionFactory 将消息发布到另一个队列

消息发布后onMessage() 抛出异常

然后消息会回滚到 READ 队列,不会发布到 WRITE 队列

我的代码看起来像这样......

@Component
public class MyJmsReceiver implements MessageListener
{
    @Autowired MyJmsSender myJmsSender;
    
    @Override
    public void onMessage(Message message)
    {
        myJmsSender.sendMessage("some-payload");
        
        if(true) throw new RuntimeException("BOOM!");
    }
}


@Component
public class MyJmsSender
{
    @Transactional(propagation = Propagation.MANDATORY)
    public void sendMessage(final String payload)
    {
        jmsTemplate.convertAndSend("QUEUE.OUT", payload);
    }
}


@Configuration
@EnableJms
@EnableTransactionManagement
public class Config
{
    @Bean
    public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory)
    { …
Run Code Online (Sandbox Code Playgroud)

spring-transactions spring-boot ibm-mq

1
推荐指数
1
解决办法
4210
查看次数