2012-09-26 85 views
1

我是JUnit的初学者和设计模式,所以请原谅我。JUnit测试和Google Guice

我读这个技术的网页:

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&sqi=2&ved=0CB4QFjAA&url=http%3A%2F%2Ftechruminations.wordpress.com%2F2011%2F05%2F30%2Fsales-tax-problem-form-thoughtworks-for-interview%2F&ei=QBVjUIHgDYWAiQefzoHoBQ&usg=AFQjCNFIBDF10v9zEMRpAIgl9Yi7DZ172w&sig2=E-Dwtx9UaU4lBbyD0j9bww

我能理解实际的编码和类组织等,混淆我都低于相关的两个问题这一特定问题的唯一的事情:

  1. 它使用了一个名为“依赖注入”的设计模式,使用Google的Guice,但是,我发现我可以在不使用此设计模式的情况下实现相同功能。我不知道在这个问题中使用依赖注入是不是必须的?

  2. 由于我是JUnit的新手,我的理解是他为购物车,项目编写测试用例并单独测试以证明其正确性。但是为什么他需要最终的“构建和部署”部分来编译和运行测试程序,因为我可以轻松地做到这一点,而无需创建该xml文件,只需在Eclipse中右键单击并选择“作为JUnit测试运行”即可。

请给我一些关于JUnit和设计模式的帮助,谢谢!

+0

您希望使用依赖注入“解决”的动机是什么? Spring是一个非常流行的框架,它大大地利用了DI。坦率地说,它鼓励为您的代码提供很多优秀的设计,从而使您的代码更易于测试,维护和使用。另外,DI并不复杂。你是否也许在这个话题上陷入困境? (我必须自己去打这样的想法。) – Marvo

回答

2
  1. 吉斯是一个依赖注入框架,它是用于管理对象和它们的依赖的长链,和更高改变实现一个非常有用的工具。对于这个问题或任何问题,这不是严格必要的,但是在某些情况下您可能会发现它非常有用。

    • 在您发布的示例中,仅有一个ItemIntf实现者,并且只有一个CartIntf实现者,并且只有一个TaxCalculatorIntf实现者。因为这些都与Guice绑定,所以稍后您可以编写CartIntf的另一个实现(比如SessionBasedCart),并通过更改模块中的单行来更改您的类使用的实现。
    • 同样,如果Item需要额外的依赖项,例如ItemCatalog,则不需要更改任何其他文件。 Item可以简单地注入ItemCatalog。
    • 最后,通过依赖注入框架,你可能会发现你的类更容易测试。对于像ServiceTaxCalculator这样的类,如果它调用任何外部依赖关系,编写一个测试传递这些依赖关系(而不是让您的类使用new运算符并稍后替换它们)非常容易。
  2. 构建和部署部分指的是所谓的Ant工具,它是使用XML来指定编译指令和依赖如JUnit的一种方式。 Eclipse有一套用于管理类路径和管理JUnit依赖关系的内置工具,这意味着您不需要自行构建其中的一个。但是,如果您想在Eclipse之外运行测试,则可能需要创建一个类似于该文件的文件。

你可以阅读更多关于Apache Ant,看看到底有什么可以为你的项目做的,也了解更多关于Google Guice为什么依赖注入可以对某些项目是个好主意。

+0

谢谢,真的有帮助 – Kevin

+0

虽然理解起来有点困难,而且它的概念要消化得更多一些,但如果您正在处理任何复杂的项目。蚂蚁是伟大的,但Maven处理很多东西,最终编写了大量的Ant脚手架。它可以让你专注于你的应用,而不是构建你的应用。 – Marvo