1

我是 JUnit 和设计模式的初学者,请见谅。

我正在阅读这个技术网页:

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% 2F销售税问题形式-thoughtworks-for-interview%2F&ei=QBVjUIHgDYWAiQefzoHoBQ&usg=AFQjCNFIBDF10v9zEMRpAIgl9Yi7DZ172w&sig2=E-Dwtx9UaU4lBbyD0j9bww

我可以理解实际的编码和班级组织等。唯一让我困惑的是以下与此特定问题相关的两个问题:

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

  2. 由于我是 JUnit 的新手,我的理解是他为 cart、item 编写了测试用例并单独测试它们以证明正确性。但是为什么他需要最后的“构建和部署”部分来编译和运行测试程序,因为我可以很容易地做到这一点而无需创建该 xml 文件,只需在 Eclipse 中右键单击并选择“作为 JUnit 测试运行”。

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

4

1 回答 1

2
  1. Guice 是一个依赖注入框架,它是一个非常有用的工具,用于管理长链对象及其依赖关系,以及以后更改实现。对于这个问题或任何问题,它并不是绝对必要的,但您可能会发现它在某些情况下非常有用。

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

您可以阅读有关Apache Ant的更多信息,以确切了解它可以为您的项目做什么,还可以阅读更多有关Google Guice以及为什么依赖注入对于某些项目可能是一个好主意的信息。

于 2012-09-26T15:42:35.233 回答