加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC – 单元测试过度杀毒? (TDD)

发布时间:2020-12-16 00:33:27 所属栏目:asp.Net 来源:网络整理
导读:所以我开始抓住TDD错误,但是我想知道我是否真的做到这一点…我似乎正在写一些测试。 越多的测试越好,肯定,但我有一种感觉,我已经做了。说实话,我不知道我能写多久这些简单的重复性测试。 例如,这些是我的AccountController的LogOn操作: public Action
所以我开始抓住TDD错误,但是我想知道我是否真的做到这一点…我似乎正在写一些测试。

越多的测试越好,肯定,但我有一种感觉,我已经做了。说实话,我不知道我能写多久这些简单的重复性测试。

例如,这些是我的AccountController的LogOn操作:

public ActionResult LogOn(string returnUrl)
{
    if (string.IsNullOrEmpty(returnUrl))
        returnUrl = "/";

    var viewModel = new LogOnForm()
    {
        ReturnUrl = returnUrl
    };

    return View("LogOn",viewModel);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogOn(LogOnForm logOnForm)
{
    try
    {
        if (ModelState.IsValid)
        {
            AccountService.LogOnValidate(logOnForm);

            FormsAuth.SignIn(logOnForm.Email,logOnForm.RememberMe);

            return Redirect(logOnForm.ReturnUrl);
        }
    }
    catch (DomainServiceException ex)
    {
        ex.BindToModelState(ModelState);
    }
    catch
    {
        ModelState.AddModelError("*","There was server error trying to log on,try again. If your problem persists,please contact us.");
    }

    return View("LogOn",logOnForm);
}

很自我解释

然后我有以下测试套件

public void LogOn_Default_ReturnsLogOnView()
public void LogOn_Default_SetsViewDataModel()
public void LogOn_ReturnUrlPassedIn_ViewDataReturnUrlSet()
public void LogOn_ReturnUrlNotPassedIn_ViewDataReturnUrDefaults()
public void LogOnPost_InvalidBinding_ReturnsLogOnViewWithInvalidModelState()
public void LogOnPost_InvalidBinding_DoesntCallAccountServiceLogOnValidate()
public void LogOnPost_ValidBinding_CallsAccountServiceLogOnValidate()
public void LogOnPost_ValidBindingButAccountServiceThrows_ReturnsLogOnViewWithInvalidModelState()
public void LogOnPost_ValidBindingButAccountServiceThrows_DoesntCallFormsAuthServiceSignIn()
public void LogOnPost_ValidBindingAndValidModelButFormsAuthThrows_ReturnsLogOnViewWithInvalidModelState()
public void LogOnPost_ValidBindingAndValidModel_CallsFormsAuthServiceSignIn()
public void LogOnPost_ValidBindingAndValidModel_RedirectsToReturnUrl()

这是杀了吗我甚至没有显示服务测试!

哪些(如果有的话)可以剔除?

TIA,
查尔斯

解决方法

这一切都取决于你需要/想要多少覆盖面,多少可靠性是一个问题。

以下是您应该问的问题:

>这个单元测试是否有助于实现我还没有的功能/代码更改?
>如果稍后进行更改,本机测试是否有助于回归测试/调试本机?
>这个单元测试的代码是不是很简单,还是应该进行单元测试?

关于第三个,我记得当我开始编写单元测试(我知道,不像TDD那样),我会有这样的测试:

string expected,actual;
TypeUnderTest target = new TypeUnderTest();
target.PropertyToTest = expected;
actual = target.PropertyToTest;
Assert.AreEqual<string>(expected,actual);

我可以用我的时间做一些更有成效的事情,比如为我的桌面选择一个更好的壁纸。

我推荐这篇文章ASP.net MVC书作者Sanderson:

http://blog.codeville.net/2009/08/24/writing-great-unit-tests-best-and-worst-practises/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读