2015-03-16 3 views
1

раньше, когда я бегу моих тестов я создал свой код, чтобы выглядеть следующим образом:C# тест всегда возвращает истину, даже если тест не

private bool ValidateTestOne(EntityModel.MultiIndexEntities context) 
    { 
    if (context.SearchDisplayViews.Count() != expectedSdvCount) 
     { 
       Assert.Fail(" Search Display View count was different from what was expected"); 

     } 
    if (sdv.VirtualID != expectedSdVirtualId) 
     { 
      Assert.Fail(" Search Display View virtual id was different from what was expected"); 

     } 
    if (sdv.EntityType != expectedSdvEntityType) 
     { 
      Assert.Fail(" Search Display View entity type was different from what was expected"); 

     } 
    return true; 
    } 

Это также возвращает правильный путь, говоря мне, если тест прошло или провалилось. С тех пор, и после того, как некоторые советы, я изменил мой код, чтобы он выглядит следующим образом:

private bool ValidateTestOne(EntityModel.MultiIndexEntites context) 
{ 
     Assert.AreEqual(expectedEntityCount, context.Entities.Count(), "Entity Count was different from what was expected"); 


     return true; 
} 

Мои мысли об использовании нового Assert.AreEqual является то, что он все равно вернется обратно истинным или ложным в зависимости от того, что прошло не удалось. Но теперь мой тест всегда возвращает true, потому что у меня нет возможности выработать, если мой тест не удался или нет.

Все это определяется вызываемым следующей строкой в ​​моей основной метод испытания:

Assert.IsTrue(test4PassFail = ValidateTest("4.4"), "Test 4 "); 

Есть ли способ я могу ammend мой новый код, чтобы вернуть истинным или ложным, без необходимости вернуться к своему старому коду ,

+0

Вы используете среду тестирования, или свой собственный в доме люкс? – MyCodeSucks

+0

Я использую то, что у вас есть с визуальной студией. – Sean

+1

Почему у вашего тестового метода есть возвращаемое значение? – xeraphim

ответ

4

Вместо того, чтобы делать return true;, вы могли бы сделать Assert.AreEqual(expectedEntityCount, context.Entities.Count()");.

Это будет ваш отказ/пропуск. Вам не нужно возвращаться. Но так оно и есть, вы все время возвращаете true.

[TestClass] 
public class Tests 
{ 
    [TestMethod] 
    private void ValidateTestOne(EntityModel.MultiIndexEntites context) 
    { 
      Assert.AreEqual(expectedEntityCount, context.Entities.Count(), "Entity Count was different from what was expected"); 
    } 
} 
+0

Я просто пробовал, но мой тест по-прежнему проходит, хотя в окне вывода есть мое сообщение об ошибке. – Sean

+0

Глупый вопрос, но вы удалили оператор 'return'? – MyCodeSucks

+0

Да, прокомментировал это. Теперь метод void – Sean

3

Вам необходимо следовать самому MSTest способу проведения испытаний. В вашем классе должен быть атрибут [TestClass], а вашим методам нужен [TestMethod]. Методы внутри тестового класса недействительны. Ваши методы возвращают true независимо от утверждений. VS позволяет вам добавить тестовый проект и тестовые классы для поддержки вашего кода. Он добавит вам соответствующие атрибуты.

[TestClass] 
public class Tests 
{ 
    [TestMethod] 
    public void DriveInfoTest() 
    { 
     // set up 
     DriveUnit uut = new DriveUnit(); 

     // run 
     var result = uut.GetInfo(); 


     // verify 
     Assert.IsNotNull(result, "Get Info did not return an object."); 
    } 

} 
0

В первом случае вы всегда возвращаете истину, потому что это то, что вы установили для возврата.

вы должны рассмотреть вопрос о внесении их вложенным, если другого заявления

private bool ValidateTestOne(EntityModel.MultiIndexEntities context) 
    { 
    if (context.SearchDisplayViews.Count() != expectedSdvCount) 
     { 
       Assert.Fail(" Search Display View count was different from what was expected"); 
//does it return true or false? 
//return true or false 

     } else if (sdv.VirtualID != expectedSdVirtualId){ 

      Assert.Fail(" Search Display View virtual id was different from what was expected"); 

//again true or false? 

     } else if(sdv.EntityType != expectedSdvEntityType) { 
      Assert.Fail(" Search Display View entity type was different from what was expected"); 
//true or false? 

     } 

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