小编Ana*_*ige的帖子

使用Mockito模拟类的成员变量

我是开发新手,特别是单元测试.我想我的要求很简单,但我很想知道别人的想法.

假设我有两个类似的 -

public class First {

    Second second ;

    public First(){
        second = new Second();
    }

    public String doSecond(){
        return second.doSecond();
    }
}

class Second {

    public String doSecond(){
        return "Do Something";
    }
}
Run Code Online (Sandbox Code Playgroud)

假设我正在为测试First.doSecond()方法编写单元测试.但是,假设,我想像Mock这样的Second.doSecond()类.我正在使用Mockito来做这件事.

public void testFirst(){
    Second sec = mock(Second.class);
    when(sec.doSecond()).thenReturn("Stubbed Second");

    First first = new First();
    assertEquals("Stubbed Second", first.doSecond());
}
Run Code Online (Sandbox Code Playgroud)

我看到模拟没有生效,断言失败了.有没有办法模拟我想测试的类的成员变量.?

java mocking mockito

123
推荐指数
6
解决办法
21万
查看次数

正则表达式匹配一定长度的单词

我想知道正则表达式匹配单词,使单词具有最大长度.例如,如果一个单词的长度最多为10个字符,我希望正则表达式匹配,但如果长度超过10,则正则表达式不匹配.

我试过了

^(\w{10})$
Run Code Online (Sandbox Code Playgroud)

但只有当单词的最小长度为10个字符时,才会给我带来匹配.如果单词超过10个字符,它仍然匹配,但只匹配前10个字符.

java regex

58
推荐指数
5
解决办法
14万
查看次数

用于将Array转换为CSV的Java API

假设我有一个int,float,string等数组.是否有任何实用程序API(例如Commons,Guava)会给我一个逗号分隔的字符串?

像这样,

int[] a = {1,2,3,4,5}. 
String s = magicAPI.getCSV(a); // s == "1,2,3,4,5";
Run Code Online (Sandbox Code Playgroud)

java csv utilities

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

Java - 方法调用后对象状态不会更改

初学java问题,但我无法理解在下面的例子中,call-by-Value(或Reference)是如何工作的 -

为什么在我的自定义String对象退出方法后,String值不会被修改.?与Date等其他类相同

public class StringMadness {

public static void main(String[] args) {
    String s = "Native String";
    CustomStringObject cs = new CustomStringObject();
    System.out.println("Custom String Before: " + cs.str);
    hello(cs);
    System.out.println("Custom String After: " + cs.str);

    System.out.println("Native String Before: " + s);
    hello(s);
    System.out.println("Native String After: " + s);
}

private static void hello(String t) {
    t = "hello " + t;
}

private static void hello(CustomStringObject o) {
    o.str = "hello " + o.str;
  }
}

class CustomStringObject { …
Run Code Online (Sandbox Code Playgroud)

java pass-by-reference pass-by-value

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

如果在单独的类中定义了异常子句,则Camel异常处理不起作用

我正在尝试构建一个具有多个camel路由的应用程序,这些路由在内部重用了许多常用路由.因此,我试图在几个不同的Route Builder类中隔离路由,然后在需要的地方连接路由.

例如,所有与发送电子邮件有关的路由都进入EmailRouteBuilder类,所有处理特定JMS队列的路由都进入MyQueueRouteBuilder类.我认为这应该没问题,因为Camel不区分类,只查找路由定义.

另外,我还将几个异常处理路由分组到一个单独的ExceptionHandlingRouteBuilder中.

我也通过在Spring中定义camel context来连接所有不同的类,如此 -

<camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
    <propertyPlaceholder id="properties" location="classpath:${env}/autoimport.properties"/>
    <!-- Common Routes -->
    <routeBuilder ref="emailRouteBuilder" />
    <routeBuilder ref="myQueueRouteBuilder" />
  <routeBuilder ref="httpRouteBuilder" />
    <routeBuilder ref="exceptionsRouteBuilder" />
    <routeBuilder ref="customer1RouteBuilder" />
    <routeBuilder ref="customer2RouteBuilder" />

</camelContext>
Run Code Online (Sandbox Code Playgroud)

我的例外路由器包含许多例外条款,如 -

onException(ConnectException.class)
            .routeId("connectExceptionEP")
            .handled(true)
            .log("Caught Exception: ")
            .to("direct:gracefulExit");

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

但是,看起来在另一个类中定义的异常存在问题,或者就此而言,在主路由定义中单独定义.

我通过查找正在引导的路由(通过routeId)并在检查何时抛出异常时在日志中验证了这一点.

另外,为了进一步确认,我采用了http Connect异常处理路由并将其直接放在httpRouteBuilder中并且... ..!,异常处理现在可以解决这个异常.

我在这里错过了一些东西,以便在其自己的类中很好地定义所有异常.?

我正在使用Apache Camel 2.9.0,但我在2.8.3中也验证了相同的行为.

谢谢,阿南德

routes exception apache-camel

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

从页面删除选项卡应用程序抛出错误

从页面中删除选项卡应用程序会引发错误..我可以成功添加选项卡应用程序,但无法使用相同的凭据删除它.

不确定它是否是新的.我很确定我的数据是正确的.

重现步骤

  1. 继续使用图形API资源管理器.
  2. 尝试删除/192869707423790/tabs/app_149874521847288.
  3. 引发错误 -

    { "error": { "message": "(#100) Tab is not installed or not removable: app_149874521847288", "type": "OAuthException", "code": 100 } }

tabs facebook facebook-page

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

Youtube V3 API - 如何设置APIKey

Youtube API新手在这里.我似乎无法弄清楚如何在运行不需要oAuth的查询时设置APIKey.我也找不到任何例子.

我试图使用像这样的Java API 调用VideoCategories.List -

`

  String apiKey = properties.getProperty("youtube.apikey");  // Where does this go.? 
        youtube = new YouTube.Builder(new NetHttpTransport(), JSON_FACTORY, new HttpRequestInitializer() {
            @Override
            public void initialize(HttpRequest httpRequest) throws IOException {

            }
        }).setApplicationName("youtube-cmdline-search-sample").build();


        List<VideoCategory> categories = youtube.videoCategories().list("snippet").setRegionCode("US").execute().getItems();
Run Code Online (Sandbox Code Playgroud)

`

但是,我找不到一个占位符来设置我的apiKey.

任何帮助,将不胜感激.

java youtube youtube-api

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