小编Kyl*_*yle的帖子

在单元测试期间填充Spring @Value

我正在尝试为我的程序中用于验证表单的简单bean编写单元测试.bean使用注释@Component并具有使用初始化的类变量@Value("${this.property.value}") private String thisProperty;

我想为这个类中的验证方法编写单元测试,但是,如果可能的话,我想在不使用属性文件的情况下这样做.我的理由是,如果我从属性文件中提取的值发生变化,我希望这不会影响我的测试用例.我的测试用例是测试验证值的代码,而不是值本身.

有没有办法在我的测试类中使用Java代码来初始化Java类并在该类中填充Spring @Value属性然后使用它来测试?

我确实发现这个How To看起来很接近,但仍然使用属性文件.我宁愿这一切都是Java代码.

谢谢

java junit spring spring-annotations

203
推荐指数
8
解决办法
18万
查看次数

来自终端的单线sftp

在一天中有几次,我可能正在运行测试,我需要查看远程服务器上的日志文件.我已经习惯使用我的终端sftp进入远程服务器并将所需的日志文件下拉到/tmp我的本地计算机上.

我正在查看今天的选项man sftp,试图找出一种基本上在一行中运行以下命令的方法,这样我就不必输入命令,按回车键,输入命令按回车键等.

(我现在应该做什么)

sftp myuser@myserver
--mypassword at prompt
lcd /tmp
get /dir/dir/dir/dir/file
quit
Run Code Online (Sandbox Code Playgroud)

我在查看之前未使用过man sftp的参考资料时发现了scp.我觉得这可能是我正在寻找的,但我没有看到一种方法来指定我想要安全复制文件的位置.

有人可以为我提供/dir/file从远程服务器获取并下载到的方法/tmp/file_plus-my-description吗?

我希望能够运行类似于常规UNIX副本的sftp或scp命令,如:

scp myuser@myserver /dir/file /tmp/file_plus-my-description
Run Code Online (Sandbox Code Playgroud)

我正在使用TerminalMac OS X 10.8中的内置功能.谢谢.

unix terminal sftp scp

68
推荐指数
5
解决办法
10万
查看次数

在测试期间注入@Autowired私有字段

我有一个组件设置,它本质上是一个应用程序的启动器.它的配置如下:

@Component
public class MyLauncher {
    @Autowired
    MyService myService;

    //other methods
}
Run Code Online (Sandbox Code Playgroud)

MyService使用@ServiceSpring注释进行注释,并自动连接到我的启动器类中,没有任何问题.

我想为MyLauncher编写一些jUnit测试用例,为此我开始这样一个类:

public class MyLauncherTest
    private MyLauncher myLauncher = new MyLauncher();

    @Test
    public void someTest() {

    }
}
Run Code Online (Sandbox Code Playgroud)

我可以为MyService创建一个Mock对象并将其注入我的测试类中的myLauncher吗?我目前在myLauncher中没有getter或setter,因为Spring正在处理自动装配.如果可能的话,我不想添加getter和setter.我可以告诉测试用例使用@Beforeinit方法将模拟对象注入到自动装配的变量中吗?

如果我对此完全错误,请随意说出来.我还是新手.我的主要目标是只需要一些Java代码或注释,将模拟对象放在该@Autowired变量中,而不必编写setter方法或必须使用applicationContext-test.xml文件.我宁愿为.java文件中的测试用例维护所有内容,而不是仅为我的测试维护单独的应用程序内容.

我希望使用Mockito作为模拟对象.在过去,我通过使用org.mockito.Mockito和创建我的对象来完成此操作Mockito.mock(MyClass.class).

java junit spring unit-testing autowired

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

使用Mockito存根并执行测试方法

我最近问了几个关于jUnit和Mockito的问题,我仍然在努力解决这个问题.这些教程都是非常简单的示例,所以我很难扩展我的测试用例以适应我的课程.

我正在尝试为我在webapp中的一个代理中的方法编写一些测试用例.该方法与代理内部的其他几种方法交互以验证某些对象.我现在只想测试这一种方法.

这是我试图做的事情:

  1. 像这样创建我的代理的Mockito对象:

    MyProcessingAgent mockMyAgent = Mockito.mock(MyProcessingAgent.class);

  2. 使用Mockito.when设置存根(希望是正确的术语),如下所示:

    Mockito.when(mockMyAgent.otherMethod(Mockito.any(arg1)).thenReturn(requiredReturnArg);

  3. 尝试执行我的方法,如下所示:

    List myReturnValue = mockMyAgent.methodThatNeedsTestCase();

我期待的东西myReturnValue,但收到0反而所以我试图调试.当我调用该方法时,它永远不会执行.我在方法的第一行有一个调试点,永远不会被触及.

如果我想在类的一个方法中执行代码,但强制类中的其他方法(尝试与外部世界中的数据库交互的方法)返回伪造的值.这可能与Mockito一起吗?

看来我目前的方法不是一种正确的测试方式,但我不确定如何向前推进.我可以模拟我的类并让一个方法像正常一样执行,而其他方法被存根以返回我给定的值,这样我在测试这个方法时就不必处理数据访问了吗?

java junit mocking mockito

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

String'eq'Perl中未初始化的值

我正在收到运行我的一个Perl脚本的警告.错误是在一个简单的if语句中引发的,我正在测试数组中的字符串是否等于另一个字符串.

我和我的同事尝试了几种情况,仍然无法解决警告.到目前为止,我已经尝试将我的所有研究都放到这个帖子中,所以它有点长,但请坚持下去.我完全陷入困境,并希望Stack Overflow的一个伟大思想可以帮助我!

产生问题的代码是:

if ($pieces[0] eq "PromotionNumber")
Run Code Online (Sandbox Code Playgroud)

该部分的代码块是:

my @pieces = split(/=/, $var);
if($pieces[0] eq "PromotionNumber") {
     $promoNumber = $pieces[1];
} elsif ($pieces[0] eq "Type") {
# More similar code follows
Run Code Online (Sandbox Code Playgroud)

我在上面的代码中的目标是将我在文本文件中找到的所有变量分配给相应的Perl变量.然后我将这些找到的变量插入到SQL数据库中.

文本文件有几个可以按不同顺序排列的字段,这就是我使用开关样式if-elsif ...来完成赋值的原因.还有一些我不关心的领域,比如Level,我只是忽略这些领域.但是,这些字段是导致警告的字段.

$var被设置为以下,因为它遍历...

PromotionNumber=000
RecordOffset=0
Code=0
SubCode=1
Level=0
Run Code Online (Sandbox Code Playgroud)

当我点击"Level = 0"时,我可以在PerlIDE.exe调试器中暂停,看到该字符串被拆分为Level和0并插入到数组中.但是,一旦代码进入if语句和测试,$pieces[0] eq "PromotionNumber"我就会收到警告.

我甚至可以在if声明之前打印$ pieces [0] ,它将打印"Level".

如果我将代码更改为以下警告消失...

my @pieces = split(/=/, $var);
if($pieces[0] eq "Level") {
    #My problematic variable test
}elsif($pieces[0] eq "PromotionNumber") {
     $promoNumber = …
Run Code Online (Sandbox Code Playgroud)

string perl warnings initialization

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

Java类型列表是不明确的?

我是一名具有基本编程背景的编程爱好者,但我对Java编程语言完全不熟悉.

我想学习如何构建一个简单的Web爬虫,我正在使用这个站点来编译源代码,看看它是如何工作的,并看到它在行动! http://java.sun.com/developer/technicalArticles/ThirdParty/WebCrawler/#demo

该网站提供的来源是:http: //java.sun.com/developer/technicalArticles/ThirdParty/WebCrawler/WebCrawler.java

我正在运行eclipse 3.2并使用sun-java-6 JRE来编译applet.我在Ubuntu发行版Crunchbang上运行.

图书馆的某些部分我不熟悉,也不知道如何修复.

List listmatches;
Run Code Online (Sandbox Code Playgroud)

错误说" The type List is ambiguous".

我有包,java.utils.*;但错误仍然存​​在.

我的语法有问题还是有新的语法List

java list

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

自定义布局的UICollectionView变为空白

我为使用UICollectionView和自定义UICollectionViewLayout的用户构建了电视指南样式的应用程序。自定义布局使用四个不同的自定义UICollectionViewCells。我遇到了一个非常有趣的问题,困扰了我和我的团队。我的帖子很长,但是这样做的目的是希望为您提供完整的背景信息。如果您有时间阅读并向我介绍您的想法。我将不胜感激。与往常一样,感谢SO社区的所有帮助。

tl; dr-具有自定义布局的UICollectionView(UICollectionViewLayout的子类)随机丢失视图中的所有数据。完全空白。.reloadData()被调用viewDidAppear且无法修复。对于原因感到困惑。

第0节第0项是一种类型的单元格,始终保持在左上方。滚动时,单元格将随您移动并保持在左上角。

第0节第1-n项是第二种单元格,始终保持在顶部。

1-n节,项目0-n是“站”,这是另一种类型的单元,始终沿左边界保留。

所有其他单元格是“显示”和第四种类型的单元格,并根据时间和电台映射到特定的x,y坐标。

这个collectionView的性能非常好,并且在很大程度上使我们能够提供出色的用户体验。但是,当完全加载了10天的数据时。它使用大量的内存。〜100-150MB,取决于阵容,电台数量和节目长度。显示时间越短,意味着将有更多单元格映射到集合视图。

当应用程序使用大量指南数据运行时,有时collectionView会打ic,我的浮动标头将停止移动。然后我所有的细胞都会消失。我们已亲切地将其称为“ 死亡白屏”,因为整个收藏集都变成了空白。此时,滚动条仍然可见,您可以看到自己在滚动,但是没有加载任何单元格。

我们已经使用连接到Xcode调试器的设备创建了几次该问题,并拥有一些数据。调试器仍可提供用于填充所有单元的数据。cellForItemAtIndexPath可以从调试器调用并返回UICollectionViewCell。从调试器打印时numberOfSectionsnumberOfItemsInSections仍然可以正常工作并显示正确的数字。cellForItemAtIndexPath集合为空后,永远不会调用该函数。这种方法的断点将永远不会被击中。仍然可以访问布局,并且可以毫无问题地访问变量。

现在,对于看起来异常的事情,但是我们不知道该怎么办。

collectionView.contentSize并且collectionView.collectionViewLayout.contentSize是不同的。在非中断设备上,通过调试器查看时它们是相同的。

collectionView.visibleCells返回一个空数组。从技术上讲这是正确的,因为我们的收藏处于死亡模式的白屏中……但是这些部分中有部分和项目,因此不确定。

这个问题是间歇性的,但是如果我们足够努力的话,我们通常每小时可以复制几次。我们认为它与内存有关,因为它永远不会在模拟器上发生。仅在物理设备上。

由于这是针对客户的未发布应用程序,因此我将其导航控件涂黑了。 空集合视图的示例

有没有人看到过类似的问题?有人对下一步尝试有任何想法吗?

最后的提示,谢谢您阅读本书!:)

ios uicollectionview uicollectionviewcell uicollectionviewlayout swift

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

全局禁用Eclipse中的Maven工作区解析

我目前正在使用Mac上的Spring Tool Suite中的多个大型webapps(运行时每个webapp实际上包含3-7个eclipse项目).导入和项目验证完成后,每个导入的webapp都有几个错误.maven构建将不断失败,直到我右键单击与给定webapp关联的每个项目并选择Maven - > Disable Workspace Resolution.我可以认为运行maven clean,maven update和maven build来清除所有错误.

如果有一种方法可以在我的eclipse设置/首选项中禁用Maven Workspace Revolution,那么它是一个全局的一次性设置,它告诉eclipse工作区中的每个项目都不使用Workspace Resolution?

下面是我拍摄的一些截图,希望能够提供所有相关细节,例如版本号.

在此输入图像描述

在此输入图像描述

我刚刚从使用带有附加组件的eclipse转换到使用预配置的Spring Tool Suite,因此安装只有几周时间.它应该是大多数插件的最新版本.

eclipse maven spring-tool-suite

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

如何以及何时使用带有jUnit的Mockito Annotations进行清理

我目前在一个相当大的项目中进行了一些单元测试时遇到了一些内存问题.在我今天的头发拉动和研究中,我逐渐意识到它似乎与物体有关,并不总是像我认为它们应该被清理一样快速清理.我开始研究"清理模拟"和"清理junit",并且发现了一些博客和论坛帖子,关于如何使用@Before@After(以及他们的*类版本)做一些你不希望每个单元都做的激烈的事情测试.这让我想到了Mockito @Mock@InjectMocks注释.

有人可以详细描述一下maven构建过程中如何在内存中处理下面的类变量吗?是否在单元测试之前,期间或之后创建对象?在最后一次单元测试完成后,对象是否立即被销毁?我应该使用@After将所有类变量设置为null吗?

非常感谢.这是我可能使用的测试用例的示例:

@RunWith(MockitoJUnitRunner.class)
public class thisCustomTest {

    @Mock
    MyCustomSpringBean myCustomerSpringBean;

    @InjectMocks
    MyBeanToTest myBeanToTest;

    @Before
    public void config() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void someTest() {
        //code here
    }

}
Run Code Online (Sandbox Code Playgroud)

只是为了快速总结/总结,我的主要问题是我是否应该使用类似@After清理类变量的东西,或者我应该只是将它们留给Java的正常范围垃圾收集......

我清理的想法:

@After
public void cleanup() {
    mockedClassVariable = null;
    injectedVariable = null;
}
Run Code Online (Sandbox Code Playgroud)

java junit garbage-collection unit-testing mockito

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

java compareTo不使用双位数字

如果我对menuInput使用0或9,则以下代码可以正常工作,循环再次迭代.如果我使用10,则满足循环条件并退出.我想这compareTo似乎只是我用这种方式的第一个价值?当我创建menuInput 99时,循环再次迭代.我是初学者,我不知道该替换什么compareTo.TY!

do...

code

while (menuInput.compareTo("8") > 0 || menuInput.compareTo("1")<0);
Run Code Online (Sandbox Code Playgroud)

java string compare compareto

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

在iOS Swift Project中从"2015-01-17T20:00Z"创建NSDate

我与此格式返回datetime一些JSON数据工作:"2015-01-17T20:00Z"当我试图把它变成一个NSDate对象,我总是留下为零.我已经通过几个教程和答案在这里对SO阅读,苹果的NSDate/NSDateFormatter /日期格式文档,和ping通了几个IRC频道.

任何人都可以告诉我我做错了什么,可能的解决方法吗?

我在Swift游乐场中失败的代码:

let dateString = "2015-01-17T20:00Z"
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-ddThh:mmZ"
let d = dateStringFormatter.dateFromString(dateString)
println(d)
Run Code Online (Sandbox Code Playgroud)

输出: "Optional(2015-01-17 06:00:00 +0000)"

在同一个Swift游乐场中工作代码:

let dateString = "2015-01-17"
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-dd"
let d = dateStringFormatter.dateFromString(dateString)
println(d)
Run Code Online (Sandbox Code Playgroud)

输出: "nil"

nsdateformatter ios swift swift-playground

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

将内部版本号传递给 Fastlane/Gym 中的 xcargs

我有一个带有一些应用程序扩展的应用程序。为了保持应用程序扩展和主应用程序使用相同的版本和内部版本号,我配置了用户定义的变量,例如“MY_BUILD_NUMBER”和“MY_VERSION”。${MY_BUILD_NUMBER}在我的应用程序和扩展 Info.plist 文件中,我只需通过和加载这些变量${MY_VERSION}

这个过程非常适合保持我的版本和构建同步。我现在正在尝试研究是否可以通过gym 将构建号从 Jenkins 传递到 fastlane 并更新我的 xcargs。然而,我一直未能根据所需的报价使这项工作适当地进行。

这些例子表明我需要像这样设置它:

gym(xcargs: "my_build_number='123'")
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将其作为选项传递时,我可以传递内部版本号“123”。但我正在努力解决如何插入 xcargs 中我需要的字符串"my_build_number='123'"

有没有人成功地做过这样的事情,可以提供一些见解?我需要以某种方式转义引号吗?

shell xcode ios fastlane fastlane-gym

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