新足迹

 找回密码
 注册

精华好帖回顾

· Congratulation Steve ! (2008-1-15) leeshine · 从钱到钱(全篇完结最后在61楼,能把所有的文字连起来读更有意思)85楼新的感受 (2011-12-22) 新澳之旅
· 全文完 (2011-5-31) 葱油拌面 · 高西西悉尼游记 (2004-12-14) 高西西
Advertisement
Advertisement
查看: 1716|回复: 25

asp.net webform unit testing [复制链接]

发表于 2011-2-5 20:59 |显示全部楼层
此文章由 uowzd01 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 uowzd01 所有!转贴必须注明作者、出处和本声明,并保持内容完整
其实是道面试题,给了个asp.net的application,要写unit test

我现在暂且不管那些web control, button click之类的test。尽量把逻辑都refactor到了app_code这个目录下,然后引用nunit.framework,写了一个test class,问题是在这个web application project里面,nunit根本用不起来。

一般的nunit test都是新建一个test project,测试business logic project。目前的asp.net web application,我也可以新建一个project来测试app_code里面的code吗?

不能用ms test,也不能用mvc,还望各位大侠不吝赐教,小弟分分献上,谢过了

[ 本帖最后由 uowzd01 于 2011-2-5 22:01 编辑 ]
Advertisement
Advertisement

发表于 2011-2-5 21:28 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
用mice右击你的website,然后publish web site,然后到你指定的website下面有precompiled/app_code的fold中找dll.建一个lib project,加上对nunit framework 和你那个web site的reference,就已可以做正常的nunit test了。

评分

参与人数 2积分 +7 收起 理由
澳贼 + 4 谢谢奉献
uowzd01 + 3 你太有才了,这么晚了还不睡

查看全部评分

发表于 2011-2-5 22:56 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
瞎转+调东西呢, good luck with your interview!!

发表于 2011-2-5 22:57 |显示全部楼层
此文章由 uowzd01 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 uowzd01 所有!转贴必须注明作者、出处和本声明,并保持内容完整
再次跪谢啊,有老大你一半的功力就可以随便挑啦

发表于 2011-2-5 23:02 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 uowzd01 于 2011-2-5 23:57 发表
再次跪谢啊,有老大你一半的功力就可以随便挑啦


慢慢来,咱们多互相取长补短把,咱谁都没牛到随便挑工作的地步

评分

参与人数 1积分 +3 收起 理由
uowzd01 + 3 谢谢奉献

查看全部评分

发表于 2011-2-5 23:22 |显示全部楼层
此文章由 uowzd01 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 uowzd01 所有!转贴必须注明作者、出处和本声明,并保持内容完整
刚才试了一下,可以了,我一开始是想总不至于把app_code目录下的代码复制一遍。忘记了还可以precompile

这样应该算是解决了asp.net unit testing的问题了,不知道入不入招人公司的法眼,做对了才有面试的机会。

至于那些button click, gridview binding应该就不用测了吧?
Advertisement
Advertisement

发表于 2011-2-5 23:30 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 uowzd01 于 2011-2-6 00:22 发表
刚才试了一下,可以了,我一开始是想总不至于把app_code目录下的代码复制一遍。忘记了还可以precompile

这样应该算是解决了asp.net unit testing的问题了,不知道入不入招人公司的法眼,做对了才有面试的机会。

至于那些button click, gridview binding应该就不用测了吧?


测web page是integration test, 一般不认为是testable,除非特别强调,也可以借助一些framework测试。但要写比较详细的deployment instruction,比较烦,如果他们强调的是unit test,就基本上不要去管了。

2010年度奖章获得者

发表于 2011-2-6 08:20 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 uowzd01 于 2011-2-5 21:59 发表
其实是道面试题,给了个asp.net的application,要写unit test

我现在暂且不管那些web control, button click之类的test。尽量把逻辑都refactor到了app_code这个目录下,然后引用nunit.framework,写了一个test class,问题是 ...


先要纠正一下概念。

你有app_code, 你那个就叫, “asp.net website”, 而不是 asp.net application.

两者不一样的, 正对你得test 来说也很不同。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2011-2-6 08:42 |显示全部楼层
此文章由 uowzd01 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 uowzd01 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-6 09:20 发表


先要纠正一下概念。

你有app_code, 你那个就叫, “asp.net website”, 而不是 asp.net application.

两者不一样的, 正对你得test 来说也很不同。

原来是这样,以前被问到过这个问题,web application and website的区别,我以为没有区别

2010年度奖章获得者

发表于 2011-2-6 08:48 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-2-5 22:28 发表
用mice右击你的website,然后publish web site,然后到你指定的website下面有precompiled/app_code的fold中找dll.建一个lib project,加上对nunit framework 和你那个web site的reference,就已可以做正常的nunit test了。


大哥,你的想法很有创意, 可是思路不对, 是行不通的。对新人来说是很大的误导。

先说题外话, 要那dll, 不必那么麻烦的 “publish web site”, 直接去 /bin 里拿好了。

unit test 是不能对一个“死”的dll 来做的, 毫无意义。 我们不是为了test 而写test的。 test是为了确保在第一时间知道整个系统的运行情况。
你想一下,就算你对这个死的dll写了一大端test, app_code 里的code变了, 或则aspx.cs 变了, 你的test就其不到应有的作用。

一般来说 “web site” 的话,就只有用functional test 了, 思路是把这个website 先run 起来,然后 request,并test他的response。
这里有两篇文章,你参考。

Create an ASP.NET Unit Test
http://msdn.microsoft.com/en-us/library/ms182526(VS.80).aspx

NUnit Unit Testing of ASP.NET Pages, Base Classes, Controls and other widgetry using Cassini (ASP.NET Web Matrix/Visual Studio Web Developer)
http://www.hanselman.com/blog/NU ... ioWebDeveloper.aspx

如果你一定要test app_code 里的 classes。

我有两个建议。

1。 为什么不新创建一个Class library Project, 把app_code里的class全部移到哪里去呢? test会简单很多。

2。 在test里你必须动态检测到 “bin”, 那后把你要的dll, load进来test
string tempPath = AppDomain.CurrentDomain.BaseDirectory;
string tempBinPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"bin");

评分

参与人数 2积分 +7 收起 理由
澳贼 + 4 谢谢奉献
uowzd01 + 3 感谢分享

查看全部评分

足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2011-2-6 08:55 |显示全部楼层
此文章由 uowzd01 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 uowzd01 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不publish website拿不到dll的,好像是隐藏起来的
Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-2-6 09:01 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 uowzd01 于 2011-2-6 09:55 发表
不publish website拿不到dll的,好像是隐藏起来的


拿我从此金盆洗手, 不搞IT了

尽管我十来年没用 ”web site“, 但你只要build 一下 这个website, dll 就都在bin里了。

bin 是website 的立身之本。

你去打开那个目录看看。

website deploy的话,那个bin是一定要在,才行的。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

2010年度奖章获得者

发表于 2011-2-6 09:20 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我觉得你那个面试单位也够高笑的。

用app_code 的人, 居然还提什么unit test。

你如果面试中对他们感觉不好, 我劝你别去了, 肯定是一特混乱的地方。相信我的直觉。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2011-2-6 10:24 |显示全部楼层
此文章由 uowzd01 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 uowzd01 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-6 10:20 发表
我觉得你那个面试单位也够高笑的。

用app_code 的人, 居然还提什么unit test。

你如果面试中对他们感觉不好, 我劝你别去了, 肯定是一特混乱的地方。相信我的直觉。

noted