2010-11-22 94 views
2

所以通常我的应用程序非常小,我的测试框架只是一个控制台项目。 。我用静态方法添加类并测试我的代码。我觉得这种方法非常简单,很好(特别是因为你可以看到输出)关于测试或单元测试的一些基本问题

我在Visual Studio中有一个很好的小测试项目,所以我对你如何测试东西有点困惑“T似乎单元喜欢,例如:

Purchase.LoadAllAsync()//finished loading on the loadcomplete event 

我会写什么样的单元测试的这个?特别是因为这会根据数据库中的内容进行更改?

我做了一些侦察的SO,发现这个: When is a Test not a Unit-test?

进一步迷惑我,如果测试没有单元测试,你会怎么测试呢?

有时我通常只是在主窗体中写一个小测试函数,或者在silverlight中编写主页,然后将其删除。但我想单元测试是因为测试需要留在那里,所以你可以重新使用它们吗?

对不起,如果我有点太无知! = P
感谢

更新


也想补充一下:什么是运行在应用程序本身精细的测试,但是从外部代码调用时失败。 (这发生在我身上几次)这是否也发生在你们身上,或者这是否意味着糟糕的设计?

+0

[关于测试或单元测试的一些基本问题]的可能的重复(http://stackoverflow.com/questions/4243374/some-basic-questions-on-testing-or-unit-testing) – 2010-11-22 07:53:19

+0

@Pieter You'已经联系到我的问题? – gideon 2010-11-22 07:54:34

+0

@Pieter,只有_one_可以是重复的,必须是原始的:-) – paxdiablo 2010-11-22 07:56:13

回答

5

如果你的测试依赖于你的控制范围之外的情况下,第一件事你应该做的是让他们在你的控制:-)

换句话说,您的测试应该使用一个测试数据库,并为部分的设置,它应该清空,然后用已知的可预测数据填充该数据库。或者,您可以放入存根例程并完全避免数据库访问。

非确定性测试与大豆奶牛一样有用。它可能似乎正在工作,但不知何故结果并不如你所料。

+0

好的那个Async方法呢?如何在稍后加载时声明它加载的内容? – gideon 2010-11-22 07:58:00

+1

如果它是异步的,则需要检查立即返回,然后(1)在某个点捕获异步操作完成指示(具有合适的超时)或(2)定期检查以确定它最终加载数据(再次超时)。由于异步操作在没有指示的情况下不是很有用,(1)可能是最可能的情况,但如果需要,您可能不得不使用(2)。 – paxdiablo 2010-11-22 08:02:09

+0

@paxdiablo如何(1)在视觉工作室单元测试环境中工作?单元测试只是一个静态方法吧? – gideon 2010-11-22 08:11:34