Tag: unit testing

你如何模拟指令来启用更高级指令的unit testing?

在我们的应用程序中,我们有几层嵌套的指令。 我正在尝试为顶级指令编写一些unit testing。 我嘲笑指令本身需要的东西,但现在我遇到了来自较低级指令的错误。 在我的顶级指令的unit testing中,我不想担心底层指令中发生了什么。 我只是想嘲笑较低级别的指令,基本上没有做任何事情,所以我可以单独testing顶级指令。 我尝试通过做这样的事情来覆盖指令定义: angular.module("myModule").directive("myLowerLevelDirective", function() { return { link: function(scope, element, attrs) { //do nothing } } }); 但是,这不会覆盖它,它只是运行这个除了真正的指令。 我怎样才能停止这些较低级别的指令做我的unit testing顶级指令的任何东西?

我不写testing。 我是愚蠢的吗?

我在unit testing和TDD方面做了一些阅读,我从来没有认真考虑过写这么精确的testing。 诚然,我不是在任何荒谬可笑的项目上工作。 如果我build立的都是小应用程序,我是不是愚蠢的不写testing? 编辑 :澄清,当我说“小应用程序”,我的意思是应用程序不会去控制一个人的生活和/或他们的财物。 我通常build立的东西应该让人们更容易生活,并使其更有效率。

集成testing中需要的数据库数据; 通过API调用创build或使用导入的数据?

这个问题或多或less是编程语言不可知的。 然而,现在我主要进入Java,这是我将从中画出的例子。 我也在考虑OOP的情况,所以如果你想testing一个方法,你需要一个方法类的实例。 unit testing的一个核心规则是它们应该是自治的,并且可以通过将类从它的依赖中隔离出来来实现。 有几种方法可以做到这一点,它取决于是否使用IoC注入依赖(在Java世界中,我们有Spring,EJB3和其他提供注入function的框架/平台),或者如果你模拟对象(对于Java你有JMock和EasyMock )将被testing的类从它的依赖关系中分离出来。 如果我们需要在不同的类中testing一组方法*,并且看到它们很好的集成,我们编写集成testing 。 这是我的问题! 至less在Web应用程序中,状态通常被持久化到数据库。 我们可以使用与unit testing相同的工具来实现与数据库的独立性。 但在我看来,我认为有些情况下,不使用数据库进行集成testing太嘲讽(但随意不同意,根本不使用数据库,也是一个有效的答案,因为它使问题变得无关紧要)。 当您使用数据库进行集成testing时,如何使用数据填充该数据库? 我可以看到两种方法: 在开始testing之前,存储集成testing的数据库内容并加载它。 如果它被存储为SQL转储,数据库文件,XML或其他东西将是有趣的知道。 通过API调用创build必要的数据库结构。 这些调用可能会分解成testing代码中的几种方法,每种方法都可能失败。 它可以被看作是依赖于其他testing的集成testing。 你如何确定需要testing的数据库数据? 你为什么select你select的方法? 请提供一个动机的答案 ,因为这是有趣的部分所在。 请记住,只是说“这是最好的做法!” 不是一个真正的动机,它只是重复你从某人读到或听到的东西。 那么请解释一下为什么这是最好的做法。 *我在unit testing的定义中包含了一个调用同一个类中的其他方法的方法,虽然在技术上可能是不正确的。 随时纠正我,但让我们保持它作为一个侧面的问题。

如何编写与外部API交互的集成testing?

首先,我的知识在于: unit testing是testing一小段代码(主要是单一方法)的unit testing 。 集成testing是testing多个代码区域(希望已经有自己的unit testing)之间的交互的那些testing。 有时,被测代码的一部分需要其他代码以特定方式进行操作。 这就是Mocks&Stubs进来的地方。所以,我们嘲笑/去掉一部分代码来执行。 这使我们的集成testing可以运行,没有副作用。 所有的testing应该能够独立运行而不需要数据共享。 如果数据共享是必要的,这是一个标志系统不够脱钩。 接下来,我面对的情况是: 当与外部API交互(特别是使用POST请求修改实时数据的RESTful API)时,我知道我们可以(应该)模拟与该API的交互(在此答案中更加雄辩地陈述)集成testing。 我也明白,我们可以unit testing与该API交互的个别组件(构build请求,parsing结果,抛出错误等)。 我没有得到的是如何去实际去做这件事。 所以,最后:我的问题。 如何testing我与具有副作用的外部API的交互? Google的购物内容API就是一个很好的例子。 为了能够执行手头的任务,需要做大量的准备工作,然后执行实际的请求,然后分析返回值。 其中一些没有任何“沙盒”环境 。 执行此操作的代码通常具有相当多的抽象层,如下所示: <?php class Request { public function setUrl(..){ /* … */ } public function setData(..){ /* … */ } public function setHeaders(..){ /* … */ } public function execute(..){ // Do […]

将<Func <T,bool >>作为参数传入的Moq'ing方法

我对unit testing和嘲笑很新! 我试图写一些unit testing,涵盖了一些与数据存储交互的代码。 数据访问由IRepository封装: interface IRepository<T> { …. IEnumerable<T> FindBy(Expression<Func<T, bool>> predicate); …. } 我正在尝试使用IRepository的具体IoC实现来testing的代码如下所示: public class SignupLogic { private Repository<Company> repo = new Repository<Company>(); public void AddNewCompany(Company toAdd) { Company existingCompany = this.repo.FindBy(c => c.Name == toAdd.Name).FirstOrDefault(); if(existingCompany != null) { throw new ArgumentException("Company already exists"); } repo.Add(Company); repo.Save(); } } 所以我testingSignupLogic.AddNewCompany()本身的逻辑,而不是逻辑和具体的存储库,我嘲笑IRepository并将其传递到SignupLogic。 嘲笑了仓库看起来像这样: […]

如何为Spring Boot Controller端点编写unit testing

我有一个以下样本Spring Boot应用程序 引导主类 @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } 调节器 @RestController @EnableAutoConfiguration public class HelloWorld { @RequestMapping("/") String gethelloWorld() { return "Hello World!"; } } 为控制器编写unit testing最简单的方法是什么? 我尝试了以下,但它抱怨未能自动assemblyWebApplicationContext @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = DemoApplication.class) public class DemoApplicationTests { final String BASE_URL = "http://localhost:8080/"; @Autowired private WebApplicationContext wac; private MockMvc […]

MVC 3:如何学习如何使用NUnit,Ninject和Moq进行testing?

我的问题的简短版本: 任何人都可以指向我一些很好的,详细的来源,我可以学习如何使用NUnit,Ninject 2和Moq在我的MVC 3应用程序中实现testing吗? 任何人都可以帮助我澄清Controller-Repository解耦,嘲笑和dependency injection是如何协同工作的? 我的问题的更长版本: 我在做什么 我目前正在开始创build一个MVC 3应用程序,它将使用entity framework4,采用数据库优先的方法。 我想这样做是正确的,所以我试图devise类,图层等,是高度可testing的。 但是,对于unit testing或集成testing,除了对其的理解之外,我几乎没有任何经验。 经过大量的研究,我已经决定使用 NUnit作为我的testing框架 Ninject 2作为我的dependency injection框架 Moq作为我的嘲笑框架。 我知道哪个框架是最好的,等等,可以进入这个话题,但是在这一点上,我真的不知道它是否足以形成一个坚实的观点。 所以,我只是决定采取这些免费的解决scheme,似乎很受欢迎,维护良好。 到目前为止,我学到了什么 我花了一些时间来研究这些东西,阅读资源,例如: 在ASP.NET MVC应用程序中实现工作模式的存储库和单元 构build可testing的ASP.NET MVC应用程序 NerdDinner第12步:unit testing 在Entity Framework 4.0中使用存储库和工作单元模式 从这些资源中,我已经设法解决了需要存储库模式的问题,这些模式需要存储库接口,以解耦我的控制器和数据访问逻辑。 我已经将这些写入了我的应用程序,但是我承认我并不清楚整个系统的机制,我是否正在为支持嘲弄或dependency injection而进行这种解耦。 因此,我当然不会介意从你们这里听到这个。 任何澄清,我可以得到这个东西将帮助我在这一点上。 事情变得泥泞的地方 我以为我很好地掌握了这个东西,直到我开始尝试围绕Ninject进行打包,正如上面引用的“ 构build可testing的ASP.NET MVC应用程序”中所述。 具体来说,在作者开始描述服务层的实现的时候,我已经完全迷失了,大约在文档的一半。 无论如何,我现在正在寻找更多的资源来学习,试图对这个东西有不同的看法,直到它开始对我有意义。 总结所有这一切,把它归结为具体的问题,我想知道以下几点: 任何人都可以指向我一些很好的,详细的来源,我可以学习如何使用NUnit,Ninject 2和Moq在我的MVC 3应用程序中实现testing吗? 任何人都可以帮助我澄清Controller-Repository解耦,嘲笑和dependency injection是如何协同工作的? 编辑: 我刚刚在Github上发现了Ninject官方wiki ,所以我将开始研究这个,看看它是否开始为我澄清事情。 但是,我仍然非常感兴趣的SO社区的想法:)

PHPUnit – unit testing,需要发送标题的项目

我目前正在与PHPUnit一起尝试开发与我正在编写的testing,但是,我目前正在编写会话pipe理器,并遇到问题这样做… Session处理类的构造函数是 private function __construct() { if (!headers_sent()) { session_start(); self::$session_id = session_id(); } } 但是,由于PHPUnit在开始testing之前发送文本,所以对此对象的任何testing都会返回一个失败的testing,因为已经发送了HTTP“Headers”…

C#:如何检查我的unit testing中没有发生exception?

我正在为这个返回“void”的方法写一个unit testing。 我想有一个案例,testing通过时,没有exception抛出。 我如何在C#中编写? Assert.IsTrue(????) (我的猜测是这是我应该检查,但什么进入“???”) 我希望我的问题很清楚。

使用Spring MVCtesting来unit testing多部分POST请求

我有以下请求处理程序来保存自动。 我已经证实,这个工程,当我使用如cURL。 现在我想用Spring MVC Test对这个方法进行unit testing。 我曾尝试使用fileUploader,但我没有pipe理得到它的工作。 我也没有设法添加JSON部分。 我将如何unit testing这个方法与Spring MVCtesting? 我无法find任何这方面的例子。 @RequestMapping(value = "autos", method = RequestMethod.POST) public ResponseEntity saveAuto(@RequestPart(value = "data") AutoResource, @RequestParam(value = "files[]", required = false) List<MultipartFile> files) {…} 我想为我的自动+一个或多个文件uplod一个JSON表示。 我将在赏金中加100个正确的答案!