2016-05-05 4 views
0

Как я могу избежать необходимости вызова этого дополнительного метода при выполнении моего модульного теста? Я хочу, чтобы как-то, чтобы этот контекст объект, созданный в конструкторе для использования в тестовом модулеКак распределить переменную класса между единичным тестом и другим классом?

[TestMethod] 
    public void Delete_Sp_List() 
    { 
     ctx = tf.GetContext(); 
     List list = ctx.Web.Lists.GetByTitle("StackTicketList"); 
     list.DeleteObject(); 
     ctx.ExecuteQuery(); 
    } 


    public TicketForm() 
    { 
     SecureString ssPwd = new SecureString(); 
     strPassword.ToList().ForEach(ssPwd.AppendChar); 
     SharePointOnlineCredentials credentials = new SharePointOnlineCredentials(strUserName, ssPwd); 
     ctx.Credentials = credentials; 
    } 

    public ClientContext GetContext() 
    { 
     SecureString ssPwd = new SecureString(); 
     strPassword.ToList().ForEach(ssPwd.AppendChar); 
     SharePointOnlineCredentials credentials = new SharePointOnlineCredentials(strUserName, ssPwd); 
     ctx.Credentials = credentials; 

     return ctx; 
    } 

ответ

1

Вы должны смотреть на [TestInitilize] атрибута. Вы можете создать метод (void Init() {...}) и пометить его этим атрибутом. Этот метод будет вызываться перед выполнением каждого метода тестирования. Поместив логику инициализации в метод Init, вы можете избежать копирования этой логики между методами тестирования.

[TestClass] 
public class Test 
{ 
    private ClientContext ctx; 


    [TestInitialize] 
    public void Init() 
    { 
     ctx = GetContext(); 
    } 

    [TestMethod] 
    public void Delete_Sp_List() 
    { 
     List list = ctx.Web.Lists.GetByTitle("StackTicketList"); 
     list.DeleteObject(); 
     ctx.ExecuteQuery(); 
    } 
} 
+0

Это спасет меня от линии перед каждым модульным тестом. Но я думал о зависимости Injection или о том, что я предполагаю. Я действительно не понимаю этого, но я чувствую, что должен быть лучший способ не повторять код в конструкторе – punkouter

+0

Или другими словами ... ctx = tf .GetContext(); вместо этого может быть ctx = tf. TheConstructor; но это не работает, поскольку конструктор не возвращает объект Context – punkouter

Смежные вопросы