我有一个函数addFromXML()
,它加载一个XML文件,解析它的DLL路径,并加载这些DLL。这些DLL是我在其他项目删除C中单元测试中使用的临时DLL
写为了测试它基于CLR组件(未本地代码),我有多个单元测试功能的是,在制备过程中,复制的一例的XML文件,并从一个存根DLL文件我的资源使用Path.getTempPath()
临时文件,然后运行测试。
通常情况下,我可以在finally块中完成测试后删除文件。但是,DLLs有问题,因为一旦加载到当前的AppDomain中,DLL就不能被删除,所以我将不得不在每次测试运行完成后手动删除这些DLL。如果我不这样做,那么每次我进行单元测试时,我的临时文件夹的大小会越来越大,这正是我想要减少的。如果他们进行单元测试,我的开发团队中的其他人也会面临同样的问题,我不想这样做。
发布DLL的唯一方法是将其加载到单独的AppDomain中。但是,我不想为我的程序这样做,因为它过于复杂并且可能会影响性能。卸载DLL的能力也不是实际程序本身的要求。
也许我的方法将DLL复制到临时文件是错误的?有没有更好的方法来测试涉及DLL的加载函数?
我想到了这一点,但因为我使用随机的路径名,以避免冲突,这可能是不实际的......除非我选择使用硬编码的路径名的临时文件,这可能会导致冲突 – 9a3eedi 2014-10-20 06:49:47
你能做些什么在测试夹具推倒你可以输出你像CompletedTestRuns.txt一个文件中使用的随机文件(S)的名称,那么当您启动读取这个文件的内容,并删除所有它表明不使用的文件任何更多。那么你可以从这个文件中移除指针并开始测试。 – 2014-10-20 07:54:33