örneğin birçok durumlarda test etmek için bu mümkündür:Tek bir yöntemde farklı durumlar ile Assert testi nasıl yazılır ve hepsi farklı yanıt durumlarıyla karşılaştığında geçer?
[TestCase(""), TestCase(null), TestCase("String"), TestCase("2010-07-14T00:00:00.000Z"), TestCase("201-07-14T00:00:00.000Z")]
Ve ben hata nesnesine Serileştirilmemiş json ile API gelen yanıt alıyorum ben Tepki Vücut İleti ve HttpStatusCode API ve farklı doğrulamaları sonra doğru olduğunu varsayalım benim savumdan doğru olacaktır. Ben Json gelen jenerik tipine deserializing am
Yöntem: Burada
public TType GetResponseJsonAsObject<TType>(HttpResponseMessage content)
{
var contentResult = content.Content.ReadAsStringAsync().Result;
var specialCase = JsonConvert.DeserializeObject<TType>(contentResult);
return specialCase;
}
benim test yöntemidir:
[TestCase(""), TestCase(null), TestCase("String"), TestCase("2010-07-14T00:00:00.000Z"), TestCase("201-07-14T00:00:00.000Z")]
public void PostAPI_SpecialCaseRequestDate_WithError_ProceedsSuccessfully(string date)
{
// arrange
SpecialCaseRequest data = new SpecialCaseRequest()
{
Name = "Test",
ExpirationDateTime = date,
};
// act + assert
string json = JsonConvert.SerializeObject(data, Formatting.Indented);
PostMethods sendJsonDemo = new PostMethods();
var response = sendJsonDemo.SendJsonDemo(json);
var responseBody = sendJsonDemo.GetResponseJsonAsObject<Error>(response);
Assert.IsNotNull(responseBody);
Assert.AreEqual("Date parameter cannot be empty string", responseBody.Message);
Assert.AreEqual("Date parameter cannot be empty null", responseBody.Message);
}
Fikir bir yöntemde tüm durumlarda test ve başarıyla geçmek ancak Bu durumda ikinci Assert'de başarısız olur, çünkü API yanıt gövdesi iletisinden doğrulama yapıldıktan sonra bu dizede: "Tarih parametresi boş dizge olamaz" ve ilk olarak Assert iletilecek, ancak ikinci Assert başarısız olur, çünkü responseBody.Message API: "Tarih parametresi açılamıyor boş dizge ". Aynı sınama, null veya "String" ve etc, gibi, TestCase(null)
, çünkü ilk assert başarısız olacaktır çünkü api yanıt gövdesinden doğrulama sonra farklı string responseBody.Message = "Tarih parametresi boş olamaz" ile başarısız olur. Her TestCase için ayrı test yöntemleri oluşturmadan bu Asserts'i nasıl güzelce yönetebilirim?
Bu, deneme modelinize bağlıdır. VisualStudio'nun NTest en azından 2013'e kadar parametreli testler yapamaz. NUint farklı olabilir. Çerçevelenmiş testlerle ilgili çerçeveniz için bilgileri kontrol etmeniz gerekecektir. –
ExpirationDateTime özelliğini dize yerine bir DateTime olarak değiştirir misiniz? Veya ExpirationDateTime kurucusunda SpecialCaseRequest ve sonra göndermeden önce test edin? – msr
@msr Evet, neden soruyorsunuz? – BinaryTie