Asyn'in ünitesini test etmek mümkün mü? soket programlama (C# kullanarak)? Bazı örnek ünite test kodunu sağlayın.C# Asyn. Soket Programlaması
5
A
cevap
4
.NET akışlarını kullanan kendi sınıfınızı sınadığınızı varsayarız; MessageSender
diyelim. .NET akışlarını test etmek için bir neden olmadığını unutmayın, Microsoft'un işi budur. Birim sınama .NET framework kodu, sadece kendi olmamalıdır. İlk olarak, MessageSender
tarafından kullanılan numaralı akışının MessageSender
değerini kullandığınızdan emin olun. Sınıf içinde oluşturmayın, ancak bir özellik değeri veya yapıcı argümanı olarak kabul edin. Örneğin:
public sealed class MessageSender
{
private readonly Stream stream;
public MessageSender(Stream stream)
{
if (stream == null)
throw new ArgumentNullException("stream");
this.stream = stream;
}
public IAsyncResult BeginSendHello(AsyncCallback callback, object state)
{
byte[] message = new byte[] {0x01, 0x02, 0x03};
return this.stream.BeginWrite(
message, 0, message.Length, callback, state);
}
public void EndSendHello(IAsyncResult asyncResult)
{
this.stream.EndWrite(asyncResult);
}
}
Şimdi bir örnek testi: Eğer BeginSendHello
akışı BeginWrite
çağırır ve doğru bayt gönderdiğini test edebilir. Akışla dalga geçeceğiz ve bunu doğrulamak için bir beklenti oluşturacağız. Bu örnekte RhinoMocks çerçevesini kullanıyorum.
[Test]
public void BeginSendHelloInvokesBeginWriteWithCorrectBytes()
{
var mocks = new MockRepository();
var stream = mocks.StrictMock<Stream>();
Expect.Call(stream.BeginWrite(
new byte[] {0x01, 0x02, 0x03}, 0, 3, null, null));
mocks.ReplayAll();
var messageSender = new MessageSender(stream);
messageSender.BeginSendHello(null, null);
mocks.VerifyAll();
}
İlgili konular
- 1. C soket programlaması için iyi bir kitap/kılavuz nedir?
- 2. C++ otomatik program oluşturma meta programlaması?
- 3. C++ 'da Soket Programlama
- 4. Windows Güvenlik Duvarı Programlaması
- 5. C# Soket programlama, pencereleri kapatma
- 6. Soket - Java İstemcisi, C# Sunucu
- 7. Soket protokolü tanımlayamıyor (soket sızıntısı)
- 8. bir soket nesnesinin akışını alın C#
- 9. Soket dinle, linux altında C++ 'da açılmıyor
- 10. C Soketler: Soket kapalıyken çöplerden kaçınmak
- 11. C# .NET Soket bağlantısı sorunu - normalde
- 12. Linux'ta C/Soket programlamasındaki sohbet odası
- 13. Resim Gönderme (JPEG) C Soketindeki Soket aracılığıyla
- 14. java sphinx4 aracılığıyla ses tanıma programlaması
- 15. C# soket i C# prizler kullanmayı öğrenmeye çalışıyorum
- 16. soket hatalarını taklit etme
- 17. (How) Soket tipini soket tanımlayıcısından bulabilir miyim?
- 18. tcp soket sunucusu göndermiyor
- 19. kullanarak Soket() Android NDK
- 20. android soket dosya aktarımı
- 21. Benim java soket programı, Eclipse
- 22. Soket C recv() 'yi kullanın ve aynı anda gönderin()
- 23. Alttaki Soket UDP için arabellek boyutunu nasıl ayarlayabilirim? C#
- 24. Bir C# udp soket istisnasından incelikle nasıl kurtarılır?
- 25. C unix soket programlama, connect() geçersiz anasistem adı üzerinde asılı
- 26. Soket programına ihtiyacım var mı?
- 27. Yeni AppDomain'e bir soket geçiriliyor
- 28. Ağ arabirimine soket soketi
- 29. Soket ve dosya tanıtıcıları
- 30. Soket Programlama Chat Sistemi