Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 使用Junit测试的开源SpringMVC应用程序?_Spring Mvc_Junit4_Mockito_Hamcrest - Fatal编程技术网

Spring mvc 使用Junit测试的开源SpringMVC应用程序?

Spring mvc 使用Junit测试的开源SpringMVC应用程序?,spring-mvc,junit4,mockito,hamcrest,Spring Mvc,Junit4,Mockito,Hamcrest,很快我们将开始一个新项目。它将是基于SpringMVC的web应用程序。我们第一次决定开始在应用程序中编写测试 我们将使用Junit、Mockito和Hamcrest编写测试 由于这将是我们第一次编写测试,而且我们团队中也没有任何人具有编写测试的经验,因此我们正在寻找一些示例应用程序,以供参考 我们已经阅读了一些关于如何使用junit等编写测试的文章。编写测试等时的最佳实践是什么,但到目前为止还没有看到任何实际应用程序 我们不想开始编写糟糕的测试 请帮忙 到目前为止,这还不是最终的清单,而是根据

很快我们将开始一个新项目。它将是基于SpringMVC的web应用程序。我们第一次决定开始在应用程序中编写测试

我们将使用Junit、Mockito和Hamcrest编写测试

由于这将是我们第一次编写测试,而且我们团队中也没有任何人具有编写测试的经验,因此我们正在寻找一些示例应用程序,以供参考

我们已经阅读了一些关于如何使用junit等编写测试的文章。编写测试等时的最佳实践是什么,但到目前为止还没有看到任何实际应用程序

我们不想开始编写糟糕的测试


请帮忙

到目前为止,这还不是最终的清单,而是根据我的经验提出的一些建议

  • 真正尝试测试单元,尤其是因为您使用的是JUnit(例如与testNG相反)。这意味着,如果您在测试中发现某些运行顺序是必需的,那么您不是在测试单元,而是在测试集成或功能

  • 与#1相关,我强烈建议您使用模拟库,您似乎确实这样做了。我,我使用,它使用起来非常简单,测试结果非常可读。您之所以需要这样做,是因为任何合理的类都依赖于其他类(如果不是顺便说一句,那么您的类可能不是很内聚)或外部资源(DBs等),并且因为在单元测试中,您应该一次只测试一个类,所以您需要模拟其他未被测试的类

  • 可测试性设计。这是一个棘手的问题,因为我认为您不应该仅仅为了测试而公开(即公开)方法,但有时您可能需要保护一些私有方法包,以便单元测试可以直接调用它们。当您的方法执行您不希望在测试环境中执行的事情(如创建文件)时,这非常有用,因此您可以将这些特定部分分离为单独的方法,然后在测试中避免这些方法。当一个方法不应该在单元测试之外使用时,请确保在javadoc中进行注释

  • 尽量避免在工作方法中创建/打开资源。例如,不使用在方法中打开并创建InputStream的文件参数,而是直接传递InputStream。这样,当您进行测试时,您可以传递内存流。或者更一般地说,单元测试非常好。每次在方法中调用
    new
    ,都可能使单元测试更难运行和/或断言

  • 如果您注意到要对某个方法运行测试,首先需要调用大量外部方法来配置被测单元的状态,那么最好进行重构。这是高耦合的良好迹象。这是关于单元测试我最喜欢的事情之一,为类创建第二个用户的事实可以帮助您仔细检查设计


  • 当然,很多人不会同意其中的一些或全部,对那些人来说,不要把它留给你自己,对这个答案发表评论,这样就有另一个观点。这对我也有帮助

    这并不是最终的清单,而是根据我的经验提出的一些建议

  • 真正尝试测试单元,尤其是因为您使用的是JUnit(例如与testNG相反)。这意味着,如果您在测试中发现某些运行顺序是必需的,那么您不是在测试单元,而是在测试集成或功能

  • 与#1相关,我强烈建议您使用模拟库,您似乎确实这样做了。我,我使用,它使用起来非常简单,测试结果非常可读。您之所以需要这样做,是因为任何合理的类都依赖于其他类(如果不是顺便说一句,那么您的类可能不是很内聚)或外部资源(DBs等),并且因为在单元测试中,您应该一次只测试一个类,所以您需要模拟其他未被测试的类

  • 可测试性设计。这是一个棘手的问题,因为我认为您不应该仅仅为了测试而公开(即公开)方法,但有时您可能需要保护一些私有方法包,以便单元测试可以直接调用它们。当您的方法执行您不希望在测试环境中执行的事情(如创建文件)时,这非常有用,因此您可以将这些特定部分分离为单独的方法,然后在测试中避免这些方法。当一个方法不应该在单元测试之外使用时,请确保在javadoc中进行注释

  • 尽量避免在工作方法中创建/打开资源。例如,不使用在方法中打开并创建InputStream的文件参数,而是直接传递InputStream。这样,当您进行测试时,您可以传递内存流。或者更一般地说,单元测试非常好。每次在方法中调用
    new
    ,都可能使单元测试更难运行和/或断言

  • 如果您注意到要对某个方法运行测试,首先需要调用大量外部方法来配置被测单元的状态,那么最好进行重构。这是高耦合的良好迹象。这是关于单元测试我最喜欢的事情之一,为类创建第二个用户的事实可以帮助您仔细检查设计


  • 当然,很多人不会同意其中的一些或全部,对那些人来说,不要把它留给你自己,对这个答案发表评论,这样就有另一个观点。这对我也有帮助

    我也推荐这本书,它有很多好的实践和味道,可以帮助你在单元测试中发现不好的实践


    我也推荐这本书,它有