2015-05-13 6 views
1

У меня есть следующий абстрактный класс, для которого я хочу написать модульный тест. Я новичок в Microsoft Fake, и до сих пор я использовал его только для тестирования публичных классов.Как модульный тест абстрактного класса с использованием фреймворка Microsft Fakes

public abstract class ProvideBase 
{ 
    private string tag = string.Empty; 

    public string Tag 
    { 
     get { return tag; }   
     set { tag = value; } 
    } 

} 

public static String GetMyConfig(string sectionName) 
{ 
    MyConfiguration config = MyConfiguration.GetConfig(sectionName); 
    return config.GetMyConfig(config.DefaultConfig); 
} 

Я написал модульный тест для моего метода GetMyConfig(). Однако мое тестовое покрытие не 100%, так как я не использовал свойство Tag. Есть ли способ проверить это?

Pex делает какие-то насмешки, чтобы проверить такие вещи. Как я издеваться/тестировать свойство Tag с помощью Microsoft Fakes?

+2

100% -ное покрытие для тестирования не так важно. Вам не нужно проверять, что каждое простое свойство возвращает значение, которое вы только что установили. – Blorgbeard

ответ

2

Я не совсем уверен, почему вы хотите использовать Фальшивки для этого. Получение класса из него позволяет достаточно легко проверить:

class TestableProvideBase : ProvideBase{} 

[TestMethod] 
public void TestTagProperty() { 
    var sut = new TestableProvideBase(); 

    Assert.AreEqual(String.Empty, sut.Tag); 

    sut.Tag = "someValue"; 

    Assert.AreEqual("someValue", sut.Tag); 
} 
0

издеваться свойством родительского класса, я использую следующий синтаксис

bool tagPropertyGot = false; 
ShimProvideBase.AllInstances.TagGet = (i) => { 
    if (i.Equals(myTestingTargetInstance)) 
    { 
     tagPropertyGot = true; 
     return "otherTagValue"; 
    } 
    return "tagvalue"; 
};