2008-11-06 202 views
14

在.NET中,您应该将单元测试项目与解决方案的其余部分一起放置吗?还是应该有一个容纳所有测试项目的测试解决方案?在解决方案中测试项目

我们有我们的代码库解决方案中的所有测试项目...它似乎有点麻烦。

你通常做什么?

回答

7

在我们当前的项目中,我们决定将所有单元测试放在单独的项目中。应用程序代码和测试使用相同的解决方案,但至少我们可以构建(并部署)不带单元测试代码的版本。

这个问题的缺点是 - 有时候你的单元测试不能到达应用程序代码的某些成员(受保护的和内部的),但是这通常会让我们发现我们的设计可以得到改进。

我想我应该指出类似的线程Here与相同/相似的主题更多的答案。

+1

尝试InternalsVisibleToAttribute(目标程序集),然后您的单元测试可以访问内部成员。私人需要使用反射的hackarounds,所以如果他们需要独立测试,我总是将它们标记为内部。 – cfeduke 2008-11-06 18:24:26

+0

(我认为OP已经按照你的建议做了,他想知道该解决方案是否应该有多个测试项目,或者应该有一个单独的解决方案,其中只包含测试项目。) – cfeduke 2008-11-06 18:27:09

+0

cfeduke:谢谢指向InternalsVisibleToAttribute! – FOR 2008-11-06 18:49:47

2

我一直把它们作为解决方案的一部分,毕竟它们是解决方案的一部分。不过,对于查看项目的不同方法,您可以有多种解决方案,因此无需解决方案可能是您希望为某些情况创建的解决方案。

0

我不使用.NET,但是当我开发任何类型的测试用例时,我将它们与代码的其余部分隔离,以便我可以在不进行测试的情况下部署应用程序。用户不需要,甚至不需要那些东西。

1

我们的测试代码没有出货,但它们是整个解决方案的一部分。我们的构建器分离出测试组件和核心组件。从解决方案管理角度来看,140多个项目的解决方案看起来非常令人难以置信。

1

我们总是在同一解决方案中使用单独的项目。

这意味着我们可以确定(使用引用)单元测试代码也测试我们的明确引用(而不是隐式地获取某些东西的可见性,因为它在同一个程序集中 - 例如“Internal”)

0

看看你的项目的设计。如果它接近MVC布局或其中一个替代方案,那么您应该拥有不同级别的不同装配。为您的设计的每个级别制作一个测试组件。

我们的测试项目通常运行在创建EXE的项目的位置。我们的EXE项目是一个精简的shell,它将事件和信息传递给一个装有控制器类的程序集,其中大部分人都将代码放入EXE项目中。这使得测试项目可以假装为正常测试过程90%的EXE。

我们仍在制定实际测试案例的最佳安排。现在我们有几个主要级别的框架实用工具,应用程序对象,UI框架,命令,UI控制器和EXE。除EXE(手动测试)外,我们还为每个级别提供了一个程序集。当我们编辑一个程序集时,我们加载该级别的测试程序集。当我们需要做一些触及每个级别的事情时,我们必须加载所有的测试程序集。

在我们的一个按钮构建过程中,我们运行测试项目exe。 (我们有一个单独的实用程序)。

1

通常我会在自己的项目中进行单元测试,并在应用程序解决方案中的自己的项目中进行集成测试。

我在哪里工作,我们正在考虑把Web测试放在一个单独的解决方案中。我们计划与QA团队分享网络测试创作,我们不希望这些测试成为构建责任。

相关问题