小编Sez*_*rli的帖子

使用Spring进行单元测试与集成测试

我正在开发一个Spring MVC项目,我对源代码树中的所有各种组件进行了单元测试.

例如,如果我有一个HomeController需要LoginService注入的控制器,那么在我的单元测试中,HomeControllerTest我只是将对象实例化为正常(在Spring之外)并注入属性:

protected void setUp() throws Exception {
    super.setUp();
    //...
    controller = new HomeController();
    controller.setLoginService( new SimpleLoginService() );
    //...
}
Run Code Online (Sandbox Code Playgroud)

这对于将每个组件作为一个独立的单元进行测试非常有用 - 除了我在项目中有几十个类,在编写一个类并为它编写成功的单元测试后,我一直忘记更新我的Spring MVC上下文文件部署的应用程序中的实际布线.我发现当我将项目部署到Tomcat并从非有线bean中找到一堆NullPointers时,我忘了更新上下文文件.

所以,这是我的问题:

  1. 这是我的第一个Spring项目 - 正如我所做的那样,为单个bean创建单元测试是正常的,然后创建第二套测试(集成测试)来测试一切是否与实际应用程序上下文一致?这是否有既定的最佳实践?

  2. 另外,如何将单元测试与集成测试分开?我有所有的源代码src,单元测试test- 应该有第二个测试文件夹(如test-integration)用于集成测试用例?

由于这是我的第一个春季项目,我很好奇其他人通常会做这类事情 - 而不是重新发明轮子我宁愿问社区其他人.

java tdd junit integration-testing spring-mvc

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

O(n)时间非递归过程遍历二叉树

我正在读一本名为" 算法简介 "的书.我想很多人都知道.我刚刚碰到一个看似相当困难的问题:

编写一个O(n)-time非递归过程,给定一个n节点二叉树,打印出每个节点的密钥.在树本身之外使用不超过恒定的额外空间,并且在过程中不要修改树,即使是暂时的.

我看到还有另外一个问题:如何在没有额外内存的情况下在O(n)时间遍历二叉树,但主要区别在于我无法修改树.我正在考虑使用一些访问过的标志,但我还没有提出正确的解决方案.这可能是我看不到的明显的东西.你会如何设计一个解决这个问题的算法?即使是对答案的一些指示也会受到赞赏.

algorithm binary-tree

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

Spring MVC 重定向属性消息

在成功或失败执行某种类型的 CRUD 操作(CREATE、DELETE 等)后显示消息时,我遇到了一些问题。我尝试使用重定向 Flash 属性,但我没有找到这些属性,并且根本无法显示消息。例如,我在我的控制器方法中声明了类似的内容:

public String DeleteAction(Model model, Object object, @RequestParam int id, RedirectAttributes attributes) {
   // Method logic
   object.delete(id);
   attributes.addFlashAttribute("success", "Object has been removed successfully.");
   return "index"; // View resolver redirect
}
Run Code Online (Sandbox Code Playgroud)

这是我的一个控制器中的函数示例,我在其中声明要绑定到视图的 flash 属性。我在 .jsp 中这样调用 flash 属性${success},尽管我仍然无法显示它。我是否缺少任何东西无法使其发挥作用?

java spring jstl spring-mvc

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

Gitignore文件中的正斜杠

我遇到了关于gitignore文件的非常奇怪的事情,它们碰巧使用正斜杠来表示特定目录

Project/module1/cppfiles
Run Code Online (Sandbox Code Playgroud)

而不是命令提示符中通常使用的反斜杠来表示特定目录。

Project\module1\cppfiles
Run Code Online (Sandbox Code Playgroud)

这是完全语法上的还是其背后有某些原因?

git gitignore

4
推荐指数
2
解决办法
386
查看次数