我是开发新手,特别是单元测试.我想我的要求很简单,但我很想知道别人的想法.
假设我有两个类似的 -
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)
我看到模拟没有生效,断言失败了.有没有办法模拟我想测试的类的成员变量.?
我想知道正则表达式匹配单词,使单词具有最大长度.例如,如果一个单词的长度最多为10个字符,我希望正则表达式匹配,但如果长度超过10,则正则表达式不匹配.
我试过了
^(\w{10})$
Run Code Online (Sandbox Code Playgroud)
但只有当单词的最小长度为10个字符时,才会给我带来匹配.如果单词超过10个字符,它仍然匹配,但只匹配前10个字符.
假设我有一个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问题,但我无法理解在下面的例子中,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) 我正在尝试构建一个具有多个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中也验证了相同的行为.
谢谢,阿南德
从页面中删除选项卡应用程序会引发错误..我可以成功添加选项卡应用程序,但无法使用相同的凭据删除它.
不确定它是否是新的.我很确定我的数据是正确的.
重现步骤
/192869707423790/tabs/app_149874521847288.引发错误 -
{
"error": {
"message": "(#100) Tab is not installed or not removable: app_149874521847288",
"type": "OAuthException",
"code": 100
}
}
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.
任何帮助,将不胜感激.