Altbilgi içeriğine atla
.NET YARDıM

C# Unit Testing (Geliştiriciler için Nasıl Çalışır)

C#'ta Birim Testine Giriş

Birim testi, yazılım geliştirme sürecinde, geliştiricilerin kaynak kodunun bireysel birimlerinin işlevselliğini doğrulamasına yardımcı olan kritik bir aşamadır. C#'ta birim testi, her bileşenin veya metodun çeşitli koşullar altında düzgün çalıştığını sağlar. Programın her bir parçasını izole ederek ve bireysel parçaların hatasız olduğunu göstererek, birim testi uygulamanızın güvenilirliğine önemli ölçüde katkıda bulunur. Bu makalede, C# Birim Test projesinin temel özelliklerini ve IronPDF kütüphanesini (.NET için) keşfedeceğiz.

Visual Studio'da İlk Birim Testinizi Kurma

Birim Test Projesi Oluşturma

C#'ta birim testine başlamak için, Visual Studio'da birim test projelerinden birini kurmanız gerekecektir. Visual Studio, yerleşik bir birim testi çerçevesi sunarak, başlangıcı kolay ve doğrudan bir hale getirmektedir. Yeni bir proje oluşturduğunuzda, C# kategorisi altında 'Birim Test Projesi' şablonunu seçin. Bu şablon, birim testleri oluşturmak ve verimli bir şekilde çalıştırmak için ihtiyaçınız olan her şeyi kurar.

using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;

namespace Unit_Test_Project_Example
{
    // A simple calculator class with an Add method
    public class Calculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }

    // A test class to validate the functionality of the Calculator class
    [TestClass]
    public class CalculatorTests
    {
        // A test method to check if the Add method in Calculator returns the correct sum
        [TestMethod]
        public void Add_ShouldReturnCorrectSum()
        {
            // Arrange
            var calculator = new Calculator();

            // Act
            var result = calculator.Add(2, 2);

            // Assert
            Assert.AreEqual(4, result);
        }
    }
}
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;

namespace Unit_Test_Project_Example
{
    // A simple calculator class with an Add method
    public class Calculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }

    // A test class to validate the functionality of the Calculator class
    [TestClass]
    public class CalculatorTests
    {
        // A test method to check if the Add method in Calculator returns the correct sum
        [TestMethod]
        public void Add_ShouldReturnCorrectSum()
        {
            // Arrange
            var calculator = new Calculator();

            // Act
            var result = calculator.Add(2, 2);

            // Assert
            Assert.AreEqual(4, result);
        }
    }
}
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports System

Namespace Unit_Test_Project_Example
	' A simple calculator class with an Add method
	Public Class Calculator
		Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
			Return a + b
		End Function
	End Class

	' A test class to validate the functionality of the Calculator class
	<TestClass>
	Public Class CalculatorTests
		' A test method to check if the Add method in Calculator returns the correct sum
		<TestMethod>
		Public Sub Add_ShouldReturnCorrectSum()
			' Arrange
			Dim calculator As New Calculator()

			' Act
			Dim result = calculator.Add(2, 2)

			' Assert
			Assert.AreEqual(4, result)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Test Metodlarını ve Test Sınıflarını Anlamak

Bir birim test projesinde, testleri sınıflar ve metotlar halinde organize edersiniz. Bir test sınıfı, birlikte çalıştırılması gereken bir birim test metodları koleksiyonunu temsil eder. Her bir birim test metodu, [TestMethod] özelliğiyle dekore edilerek, kodunuzun belirli bir işlevini test eden mantığı içerir. Test sınıfının kendisi [TestClass] özelliği ile işaretlenerek, test çerçevesine çalıştırılması gereken testler içerdiğini bildirir.

Testlerinizi Çalıştırma ve Anlama

Visual Studio'da Test Gezgini Kullanma

Visual Studio Test Gezgini penceresi, tüm test metodlarınızı çalıştırmak ve yönetmek için merkezi merkezinizdir. Tüm testleri, bir seçim kümesini veya bireysel testleri çalıştırabilirsiniz. Testleri çalıştırdıktan sonra, Test Gezgini, geçen ve başarısız olan testlerin ayrıntılı bir özetini sunarak, sorunları hızla tanımlamanıza ve çözmenize olanak tanır.

Test Sonuçlarını Yorumlama

  • Geçen Testler: Bu testler başarıyla çalıştırıldı ve test edilen kodun belirtilen koşullar altında beklenildiği gibi davrandığını gösterir.
  • Başarısız Olan Testler: Bunlar, beklenen ve gerçek sonuçlar arasında bir uyumsuzluk olduğunu göstermekle birlikte potansiyel hataları veya gereksinimlerde veya test kodunda yanlış anlamaları işaret eder.

Başarısız olan testleri derhal incelemek önemlidir, çünkü bunlar kod tabanındaki sorunların erken uyarı işaretlerini sağlar.

C# Birim Testi (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Visual Studio'da geçen bir birim testi örneği

C# Birim Testleri İçin İleri Teknikler ve En İyi Uygulamalar

Yalnızca test yazmanın ve çalıştırmanın ötesinde, C#'ta birim testlerini ustalaşmak, bazı ileri seviyedeki teknikleri ve en iyi uygulamaları anlamayı gerektirir. Bu yaklaşımlar, daha etkin ve etkili testler yazmanıza yardımcı olabilir, uygulamanızın güvenilirliğini ve sürdürülebilirliğini sağlamak için.

Testleri Etkili Bir Şekilde Düzenleme

İyi organizasyon, büyük bir test dizisini sürdürmenin anahtarıdır. Testlerinizi kapsadığı işlevselliklere göre mantıklı bir şekilde gruplandırın. Her testin neyi doğruladığını göstermek için test metodları ve sınıflarınıza açıklayıcı isimler kullanın. Bu yaklaşım, test diziniz büyüdükçe testleri daha sonra bulmanızı ve anlamanızı kolaylaştırır.

Mocking ve Bağımlılık Enjeksiyonu

Genellikle, test ettiğiniz kod dış kaynaklar veya uygulamanızın diğer kısımları ile etkileşime girer. Bu tür durumlarda, Moq veya NSubstitute gibi mock kütüphanelerini kullanarak mock nesneler oluşturun. Bu stand-in'ler gerçek nesnelerin davranışını taklit eder ve kodunuzu izole bir şekilde test etmenizi sağlar. Bağımlılık enjeksiyonu, kodunuzun test edilebilirliğini artırır; çünkü gerçeği yerine test sırasında mock veya dublörler yerleştirmenize olanak tanır.

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;

// A sample test class demonstrating the use of mocks
[TestClass]
public class ProductServiceTests
{
    // A test method to verify the GetProductById method of ProductService
    [TestMethod]
    public void GetProductById_ShouldReturnCorrectProduct()
    {
        // Arrange
        var mockRepository = new Mock<IProductRepository>();
        mockRepository.Setup(x => x.FindById(1)).Returns(new Product { Id = 1, Name = "Laptop" });

        ProductService productService = new ProductService(mockRepository.Object);

        // Act
        Product result = productService.GetProductById(1);

        // Assert
        Assert.IsNotNull(result);
        Assert.AreEqual("Laptop", result.Name);
    }
}
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;

// A sample test class demonstrating the use of mocks
[TestClass]
public class ProductServiceTests
{
    // A test method to verify the GetProductById method of ProductService
    [TestMethod]
    public void GetProductById_ShouldReturnCorrectProduct()
    {
        // Arrange
        var mockRepository = new Mock<IProductRepository>();
        mockRepository.Setup(x => x.FindById(1)).Returns(new Product { Id = 1, Name = "Laptop" });

        ProductService productService = new ProductService(mockRepository.Object);

        // Act
        Product result = productService.GetProductById(1);

        // Assert
        Assert.IsNotNull(result);
        Assert.AreEqual("Laptop", result.Name);
    }
}
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports Moq

' A sample test class demonstrating the use of mocks
<TestClass>
Public Class ProductServiceTests
	' A test method to verify the GetProductById method of ProductService
	<TestMethod>
	Public Sub GetProductById_ShouldReturnCorrectProduct()
		' Arrange
		Dim mockRepository = New Mock(Of IProductRepository)()
		mockRepository.Setup(Function(x) x.FindById(1)).Returns(New Product With {
			.Id = 1,
			.Name = "Laptop"
		})

		Dim productService As New ProductService(mockRepository.Object)

		' Act
		Dim result As Product = productService.GetProductById(1)

		' Assert
		Assert.IsNotNull(result)
		Assert.AreEqual("Laptop", result.Name)
	End Sub
End Class
$vbLabelText   $csharpLabel

Veri Odaklı Testleri Kullanma

Veri odaklı testler, aynı test metodunu farklı giriş verileri ile birden fazla kez çalıştırmanıza olanak tanır. Bu teknik, çok sayıda girdiyi ve senaryoyu, birden fazla test metodu yazmadan test etmek için özellikle kullanışlıdır. Visual Studio, test verilerinizi satır içi veriler, CSV dosyaları veya veritabanları gibi çeşitli kaynaklardan belirtmenizi sağlayarak veri odaklı testi destekler.

Asserts'i Etkili Bir Şekilde Anlamak ve Kullanmak

Asserts, test metodlarınızın kalbidir, çünkü testlerinizin sonuçlarını doğrularlar. Test çerçevenizde mevcut olan assert metodlarının kapsamını anlayın ve beklenen değerler, istisnalar veya koşullar için uygun bir şekilde kullanın. Doğru bir assert kullanmak, testlerinizi daha net ve daha sağlam yapabilir.

Sürekli Entegrasyon ve Test Otomasyonu

Birim testlerinizi sürekli entegrasyon (CI) hattınıza entegre edin. Bu, kod tabanına yapılan her değişiklikte testlerin otomatik olarak çalıştırılmasını sağlayarak, sorunları erken yakalayıp düzeltmenize yardımcı olur. Otomasyon, testlerin sık ve tutarlı bir şekilde çalıştırılmasını kolaylaştırır ki bu da sağlıklı bir kod tabanı sürdürmek için hayati öneme sahiptir.

Testleri ve Üretim Kodunu Senkronize Tutmak

Birim testleriniz, yalnızca üretim kodu ile uyumu kadar iyidir. İşlevsellikteki herhangi bir değişikliğin karşılık gelen birim testlerine yansıtıldığından emin olun. Bu uygulama, güncelleri geçmiş testlerin yanlış bir şekilde geçmesini önler ve test dizinizin uygulamanızın durumunu doğru bir şekilde temsil etmesini sağlar.

Başarısız Testlerden Öğrenmek

Bir test başarısız olduğunda, bu öğrenme ve geliştirme fırsatıdır. Başarısız bir test, beklenmedik davranışları, yanlış varsayımları veya kodunuzun gereğinden fazla karmaşık ve hataya açık alanlarını ortaya çıkarabilir. Başarısız testleri dikkatle analiz ederek alttaki nedenlerini anlayın ve bu içgörüleri hem testlerinizi hem de üretim kodunuzu geliştirmek için kullanın.

IronPDF'ye Giriş

C# Birim Testi (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - IronPDF web sitesi

.NET PDF Geliştirme için IronPDF, .NET geliştiricileri için tasarlanmış kapsamlı bir kütüphanedir ve uygulamalarında PDF belgeleri oluşturma, düzenleme ve okuma imkanı sağlar. IronPDF, en iyi PDF'leri oluşturmak için HTML, CSS, görseller ve JavaScript'ten doğrudan PDF'ler oluşturma yeteneğiyle bilinir. Windows, Linux ve macOS gibi çeşitli işletim sistemleri ile birlikte Azure ve AWS gibi bulut ortamları ve Docker dahil olmak üzere .NET proje türleri ve uygulama ortamlarının geniş bir yelpazesini destekler.

IronPDF, HTML, URL'ler ve tüm web sayfalarını, kaynağa benzeyen profesyonel PDF'lere dönüştürmeyi kolaylaştırır. Raporlar, faturalar veya web içeriğinin arşivlenmesi için idealdir. HTML'yi PDF'ye dönüştürmenin basit bir yolunu arıyorsanız, IronPDF bunu kusursuz bir şekilde yapar.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Kod Örneği

C# birim test senaryosunda IronPDF'i nasıl kullanabileceğinize dair bir örnek. HTML içeriğinden PDF oluşturan bir fonksiyonu test etmek istediğinizi varsayalım. IronPDF'i kullanarak HTML'yi PDF olarak renderleyebilir ve ardından testinizin bir parçası olarak PDF'nin varlığını veya içeriğini doğrulayabilirsiniz:

using IronPdf;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.IO;

// A sample test class to verify PDF generation
[TestClass]
public class PdfGenerationTests
{
    // A test method to verify HTML to PDF generation using IronPDF
    [TestMethod]
    public void TestHtmlToPdfGeneration()
    {
        IronPdf.License.LicenseKey = "License-Key"; // Set your IronPDF license key

        var renderer = new ChromePdfRenderer();

        // Render HTML to a PDF
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, world!</h1>");

        string filePath = Path.Combine(Path.GetTempPath(), "test.pdf");

        // Save the generated PDF to a file
        pdf.SaveAs(filePath);

        // Assert the PDF file was created successfully
        Assert.IsTrue(File.Exists(filePath), "The generated PDF does not exist.");

        // Additional assertions to verify the PDF content could be added here
        // Clean up generated file
        File.Delete(filePath);
    }
}
using IronPdf;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.IO;

// A sample test class to verify PDF generation
[TestClass]
public class PdfGenerationTests
{
    // A test method to verify HTML to PDF generation using IronPDF
    [TestMethod]
    public void TestHtmlToPdfGeneration()
    {
        IronPdf.License.LicenseKey = "License-Key"; // Set your IronPDF license key

        var renderer = new ChromePdfRenderer();

        // Render HTML to a PDF
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, world!</h1>");

        string filePath = Path.Combine(Path.GetTempPath(), "test.pdf");

        // Save the generated PDF to a file
        pdf.SaveAs(filePath);

        // Assert the PDF file was created successfully
        Assert.IsTrue(File.Exists(filePath), "The generated PDF does not exist.");

        // Additional assertions to verify the PDF content could be added here
        // Clean up generated file
        File.Delete(filePath);
    }
}
Imports IronPdf
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports System
Imports System.IO

' A sample test class to verify PDF generation
<TestClass>
Public Class PdfGenerationTests
	' A test method to verify HTML to PDF generation using IronPDF
	<TestMethod>
	Public Sub TestHtmlToPdfGeneration()
		IronPdf.License.LicenseKey = "License-Key" ' Set your IronPDF license key

		Dim renderer = New ChromePdfRenderer()

		' Render HTML to a PDF
		Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello, world!</h1>")

		Dim filePath As String = Path.Combine(Path.GetTempPath(), "test.pdf")

		' Save the generated PDF to a file
		pdf.SaveAs(filePath)

		' Assert the PDF file was created successfully
		Assert.IsTrue(File.Exists(filePath), "The generated PDF does not exist.")

		' Additional assertions to verify the PDF content could be added here
		' Clean up generated file
		File.Delete(filePath)
	End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnek, bir HTML dizgesinden PDF oluşturmak için IronPDF kullanan basit bir birim testi gösterir, geçici bir dosyaya kaydeder ve ardından dosyanın varlığını doğrular.

C# Birim Testi (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Önceki testin başarıyla geçmesi

Sonuç

C# Birim Testi (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - IronPDF lisanslama sayfası

Birim testi, yazılım geliştirme yaşam döngüsünün vazgeçilmez bir parçasıdır. Visual Studio'nun Test Explorer'ı üzerinden etkili testler kurup yazarak ve kod kapsama araçları kullanarak, C# uygulamalarınızın güvenilir olup yüksek kalite standartlarını korumasını sağlarsınız. Test güdümlü geliştirme ilkelerini anlayarak ve uygulayarak, C#'taki birim test projelerinizin kalitesini daha da artırabilirsiniz. Unutmayın, birim testinin amacı sadece hataları bulmak değil, aynı zamanda uygulamanız için daha kolay güncellemeler, hata ayıklama ve özellik ekleme sağlayan sağlam bir temel oluşturmak. IronPDF Lisanslama Seçeneklerini Keşfedin ile lisanslama seçenekleri $$ liteLicense başlayarak.

Sıkça Sorulan Sorular

C# geliştirmede birim testlerinin önemi nedir?

Birim testi, C# geliştirmede çok önemlidir çünkü her bir kod biriminin doğru çalışmasını sağlar ve genel yazılım güvenilirliğine katkıda bulunur. Bileşenleri izole ederek ve davranışlarını doğrulayarak, birim testi geliştiricilerin hataları erken yakalamasına ve yüksek kaliteli kodu korumasına yardımcı olur.

C# için Visual Studio'da bir birim testi projesi nasıl oluşturulur?

Visual Studio'da bir birim testi projesi oluşturmak için, yeni bir proje oluştururken C# kategorisinden 'Unit Test Project' şablonunu seçin. Bu, birim testlerini verimli bir şekilde geliştirmek ve yürütmek için gerekli yapıyı ve araçları sağlar.

Test amaçları için C#'de HTML içeriğini PDF'ye nasıl dönüştürebilirim?

HTML içeriğini C#'de PDF'ye dönüştürmek için IronPDF kütüphanesini kullanabilirsiniz. Bu, HTML'yi PDF olarak renderlemeyi ve dönüştürme sürecinin uygulamanızda beklendiği gibi çalıştığını doğrulamak için birim testleri ile doğrulamayı içerir.

Birim testlerinde IronPDF kullanmanın faydaları nelerdir?

IronPDF, .NET uygulamalarında PDF belgeleri oluşturma ve manipüle etme yeteneğiyle birim testlerini geliştirir. Bu entegrasyon, PDF oluşturmayı içeren test senaryolarını destekler ve belgelerin doğru bir şekilde üretilip biçimlendirildiğinden emin olur.

C#'de sahte nesneler birim testlerini nasıl geliştirir?

Sahte nesneler, test edilen kodu izole edebilmek için gerçek dünyadaki nesneleri simüle eder, böylece belirli bir işlevselliğe odaklanabilirsiniz. Bu, özellikle dış sistemlerle veya diğer uygulama bileşenleriyle etkileşimleri test etmek açısından yararlıdır.

C# birim testleri yazmak için bazı gelişmiş teknikler nelerdir?

Gelişmiş teknikler arasında alay çerçeveleri, bağımlılık enjeksiyonu ve veri odaklı testler kullanmak bulunur, bu da etkili ve sürdürülebilir testler oluşturmanıza yardımcı olur. Bu yaklaşımlar, geniş bir senaryo yelpazesini test etmeye yardımcı olur ve kod geliştikçe testlerin güncel kalmasını sağlar.

Sürekli entegrasyon C# birim testlerini nasıl geliştirebilir?

Sürekli entegrasyon (CI), her bir kod değişikliği meydana geldiğinde testlerin yürütülmesini otomatikleştirerek C# birim testlerini geliştirir. Bu, herhangi bir sorunun hızlı bir şekilde tanımlanmasını ve çözülmesini sağlar, kod kalitesini korur ve istikrarlı bir gelişim sürecini kolaylaştırır.

C# birim testlerinde assertler neden önemlidir?

Assertler, bir testin beklenen sonuçlarını doğrulamak için önemlidir. Kodun istenen şekilde davrandığından emin olarak, assertler test edilen işlevselliğin doğru olduğunu onaylar ve uygulamanın güvenilirliği konusunda güvence verir.

Visual Studio'daki Test Explorer'ın rolü nedir?

Visual Studio'daki Test Explorer, geliştiricilerin birim testlerini çalıştırıp yönetmelerini sağlayan bir araçtır. Tüm testleri, belirli test gruplarını veya bireysel testleri çalıştırmak için kullanıcı dostu bir arayüz sunar ve hangi testlerin geçtiğini veya başarısız olduğunu gösteren bir sonuç özeti sağlar.

C#'de veri odaklı test nasıl gerçekleştirilebilir?

C#'de veri odaklı test, aynı testin farklı giriş verileriyle birden çok kez çalıştırılmasını içerir. Çizgi içi veri, CSV dosyaları veya veritabanları gibi çeşitli veri kaynakları kullanılarak bu sağlanabilir, bu da çeşitli senaryolar arasında kapsamlı test yapılmasını sağlar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara