我正在开发一个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时,我忘了更新上下文文件.
所以,这是我的问题:
这是我的第一个Spring项目 - 正如我所做的那样,为单个bean创建单元测试是正常的,然后创建第二套测试(集成测试)来测试一切是否与实际应用程序上下文一致?这是否有既定的最佳实践?
另外,如何将单元测试与集成测试分开?我有所有的源代码src,单元测试test- 应该有第二个测试文件夹(如test-integration)用于集成测试用例?
由于这是我的第一个春季项目,我很好奇其他人通常会做这类事情 - 而不是重新发明轮子我宁愿问社区其他人.
我正在读一本名为" 算法简介 "的书.我想很多人都知道.我刚刚碰到一个看似相当困难的问题:
编写一个O(n)-time非递归过程,给定一个n节点二叉树,打印出每个节点的密钥.在树本身之外使用不超过恒定的额外空间,并且在过程中不要修改树,即使是暂时的.
我看到还有另外一个问题:如何在没有额外内存的情况下在O(n)时间遍历二叉树,但主要区别在于我无法修改树.我正在考虑使用一些访问过的标志,但我还没有提出正确的解决方案.这可能是我看不到的明显的东西.你会如何设计一个解决这个问题的算法?即使是对答案的一些指示也会受到赞赏.
在成功或失败执行某种类型的 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},尽管我仍然无法显示它。我是否缺少任何东西无法使其发挥作用?
我遇到了关于gitignore文件的非常奇怪的事情,它们碰巧使用正斜杠来表示特定目录
Project/module1/cppfiles
Run Code Online (Sandbox Code Playgroud)
而不是命令提示符中通常使用的反斜杠来表示特定目录。
Project\module1\cppfiles
Run Code Online (Sandbox Code Playgroud)
这是完全语法上的还是其背后有某些原因?
java ×2
spring-mvc ×2
algorithm ×1
binary-tree ×1
git ×1
gitignore ×1
jstl ×1
junit ×1
spring ×1
tdd ×1