2014-02-27 38 views
0

我有一个函数GetAssemblytree(Assembly assembly),它需要一个程序集并以递归方式返回给定程序集引用的所有程序集。未知如何编写函数的单元测试函数

我没有得到如何编写单元测试函数。

任何建议将不胜感激。

+3

创建一个虚拟程序集,引用一些其他程序集,并引用那些用于您的单元测试的程序集。 –

+0

@ user ..什么是您正在使用的单元测试框架? –

+0

@Avinash - 视觉工作室单元测试 – user3359453

回答

2

C#程序集是一个抽象类。你可以简单地扩展它,并且为了测试而虚拟实现一个具体的虚拟类,然后一切都自然而然地起作用。

+0

看起来像一个解决方案,但没有得到它:(..说我喜欢这个 - 类ConcreateAssembly:Assembly {List assemblies = new List ();}并使这个类的对象,我仍然不能打电话我的函数与这个类的对象.. – user3359453

+0

你当然可以做foreach(程序集中的程序集)GetAssemblytree(程序集); –

+0

okie ..可能是我得到它,但我的concreateassembly对象如何在运行时引用其他程序集? – user3359453

0

你不应该写a它的单元测试,你应该写几个,并尽可能简单。

首先,确保你清楚你想要你的功能做什么。使每个要求尽可能清晰,简单和原子化。然后为每个需求定义测试。

你可以定义你的测试有点像这样(只是一个粗略的草图):

public void Should_return_null_if_assembly_does_not_reference_anything(){ 
    var result = YourFunctionToTest(yourEmptyDummyAssembly); 
    ... 
    // Check result in a suitable way 
} 

public void Should_return_expected_assemblies(){ 
    var result = YourFunctionToTest(otherDummyAssembly); 
    ... 
    // Check result in a suitable way 
} 

// etc... 

拇指要记住的主要原则,是让事情变得简单,并且是究竟是什么真正明确你想检查每个测试。一旦你清楚你的目标,自己写测试并不会那么困难。