Mengembangkan Azure Functions menggunakan Visual Studio
Visual Studio memungkinkan Anda mengembangkan, menguji, dan menyebarkan fungsi pustaka kelas C# ke Azure. Jika ini adalah pengalaman pertama Anda dengan Azure Functions, lihat Pengantar Azure Functions.
Visual Studio memberikan manfaat berikut saat Anda mengembangkan fungsi:
- Edit, buat, dan jalankan fungsi di komputer pengembangan lokal Anda.
- Terbitkan proyek Azure Functions Anda secara langsung ke Azure, dan buat sumber daya Azure sesuai kebutuhan.
- Gunakan atribut C# untuk mendeklarasikan pengikatan fungsi secara langsung di dalam kode C#.
- Mengembangkan dan menyebarkan fungsi C# yang telah dikompilasi sebelumnya. Fungsi yang telah dikompilasi akan mengoptimalkan kinerja pemulaian awal dibanding fungsi berbasis skrip C#.
- Buat kode fungsi Anda di C# sambil mendapatkan semua manfaat pengembangan dari Visual Studio.
Artikel ini menyediakan detail tentang cara menggunakan Visual Studio untuk mengembangkan fungsi pustaka kelas C# dan menerbitkannya ke Azure. Sebelum Anda membaca artikel ini, pertimbangkan untuk menyelesaikan Mulai cepat Functions untuk Visual Studio.
Kecuali dinyatakan lain, prosedur dan contoh yang ditampilkan adalah untuk Visual Studio 2022.
Prasyarat
Alat Azure Functions. Untuk menambahkan Azure Functions Tools, sertakan beban kerja pengembangan Azure pada instalasi Visual Studio Anda. Jika Anda menggunakan Visual Studio 2017, Anda mungkin perlu mengikuti beberapa langkah penginstalan tambahan.
Sumber daya lain yang Anda butuhkan, seperti akun Azure Storage, dibuat di langganan Anda selama proses penerbitan.
-
Jika Anda tidak memiliki langganan Azure, buat akun gratis Azure sebelum memulai.
Membuat aplikasi Azure Functions
Templat proyek Azure Functions di Visual Studio membuat proyek pustaka kelas C# yang bisa Anda terbitkan ke aplikasi fungsi di Azure. Aplikasi fungsi memungkinkan Anda mengelompokkan fungsi sebagai unit logis untuk pengelolaan, penyebaran, penskalaan, dan berbagi sumber daya dengan lebih mudah.
Dari menu Visual Studio, pilih File>Baru>Proyek.
Di Buat proyek baru, masukkan fungsi di kotak pencarian, pilih templat Azure Functions, lalu pilih Berikutnya.
Di Konfigurasikan proyek baru Anda, masukkan Nama proyek untuk proyek, lalu pilih Buat. Nama aplikasi fungsi harus valid sebagai namespace layanan C#, jadi jangan gunakan garis bawah, tanda hubung, atau karakter non-alfanumerik lainnya.
Untuk pengaturan Buat aplikasi Azure Functions baru, gunakan nilai dalam tabel berikut:
Pengaturan Nilai Deskripsi Versi .NET .NET 6 Nilai ini membuat proyek fungsi yang berjalan dalam proses dengan versi 4.x runtime Azure Functions. Azure Functions 1.x mendukung .NET Framework. Untuk informasi selengkapnya, lihat Ringkasan versi runtime Azure Functions. Templat fungsi Pemicu HTTP Nilai ini membuat fungsi yang dipicu oleh permintaan HTTP. Akun Storage (AzureWebJobsStorage) Emulator Storage Karena aplikasi fungsi di Azure memerlukan akun penyimpanan, aplikasi ditetapkan atau dibuat saat Anda memublikasikan proyek Anda ke Azure. Pemicu HTTP tidak menggunakan string koneksi akun Azure Storage; semua jenis pemicu lainnya memerlukan string koneksi akun Azure Storage yang valid. Tingkat otorisasi Anonim Fungsi yang dibuat dapat dipicu oleh klien mana pun tanpa menyediakan kunci. Pengaturan otorisasi ini memudahkan Anda menguji fungsi baru Anda. Untuk informasi selengkapnya tentang kunci dan otorisasi, lihat Kunci otorisasi dan pengikatan HTTP dan webhook. 
Pastikan Anda mengatur Tingkat otorisasi ke Anonim. Ketika Anda memilih tingkat default Fungsi, Anda diharuskan untuk memberikan kunci fungsi dalam permintaan untuk mengakses titik akhir fungsi Anda.
Pilih Buat untuk membuat proyek fungsi dan fungsi pemicu HTTP.
Setelah Anda membuat proyek Azure Functions, templat proyek akan membuat proyek C#, menginstal paket Microsoft.NET.Sdk.Functions NuGet, dan menetapkan kerangka kerja target. Proyek baru ini memiliki beberapa file berikut:
host.json: Memungkinkan Anda mengonfigurasikan host Functions. Pengaturan ini berlaku saat dijalankan secara lokal maupun di Azure. Untuk informasi selengkapnya, lihat referensi host.json.
local.settings.json: Mempertahankan pengaturan yang digunakan saat menjalankan fungsi secara lokal. Pengaturan ini tidak digunakan saat dijalankan di Azure. Untuk informasi selengkapnya, lihat File pengaturan lokal.
Penting
Karena file local.settings.json dapat memuat informasi rahasia, Anda harus mengecualikannya melalui kontrol kode sumber proyek. Pastikan pengaturan Salin ke Direktori Output untuk file ini diatur ke Salin jika lebih baru.
Untuk informasi selengkapnya, lihat Proyek pustaka kelas Functions
Pengaturan Lokal
Saat menjalankan aplikasi fungsi di Azure, pengaturan yang diperlukan oleh fungsi Anda disimpan dengan aman di pengaturan aplikasi. Selama pengembangan lokal, pengaturan ini malah ditambahkan ke objek Values di file local.settings.json. File local.settings.json juga menyimpan pengaturan yang digunakan oleh alat pengembangan lokal.
Karena local.settings.js mungkin berisi rahasia, seperti string koneksi, Anda tidak boleh menyimpannya di repositori jarak jauh. Untuk mempelajari selengkapnya tentang pengaturan lokal, lihat File pengaturan lokal.
Visual Studio tidak secara otomatis mengunggah pengaturan pada local.settings.json ketika Anda menerbitkan proyek. Untuk memastikan bahwa pengaturan ini juga ada pada aplikasi fungsi Anda di Azure, unggah setelah Anda menerbitkan proyek Anda. Untuk informasi selengkapnya, lihat Pengaturan aplikasi Functions. Nilai dalam kumpulan ConnectionStrings tidak pernah diterbitkan.
Kode Anda juga dapat membaca nilai pengaturan aplikasi fungsi sebagai variabel lingkungan. Untuk informasi selengkapnya, lihat Variabel lingkungan.
Mengonfigurasikan proyek untuk pengembangan lokal
Runtime Fungsi menggunakan akun Azure Storage secara internal. Untuk semua jenis pemicu selain HTTP dan webhook, tetapkan kunci Values.AzureWebJobsStorage ke string koneksi akun Azure Storage yang valid. Aplikasi fungsi Anda juga dapat menggunakan Azure Storage Emulator untuk pengaturan koneksi AzureWebJobsStorage yang diperlukan oleh proyek. Untuk menggunakan emulator, atur nilai AzureWebJobsStorage ke UseDevelopmentStorage=true. Ubah pengaturan ini menjadi string koneksi akun penyimpanan aktual sebelum penyebaran.
Untuk mengatur string koneksi akun penyimpanan:
Di portal Microsoft Azure, navigasikan ke akun penyimpanan Anda.
Di tab Kunci akses, di bawah Keamanan + jaringan, salin string Koneksi dari key1.
Dalam proyek Anda, buka file local.settings.json dan atur nilai kunci
AzureWebJobsStorageke string koneksi yang Anda salin.Ulangi langkah sebelumnya untuk menambahkan kunci unik ke array
Valuesbagi koneksi lain yang diperlukan oleh fungsi Anda.
Menambahkan fungsi ke proyek Anda
Dalam fungsi pustaka kelas C#, pengikatan yang digunakan oleh fungsi didefinisikan dengan menerapkan atribut dalam kode. Saat membuat pemicu fungsi dari templat yang disediakan, atribut pemicu akan diterapkan untuk Anda.
Di Penjelajah Solusi, klik kanan simpul proyek Anda dan pilih Tambahkan>Item Baru.
Pilih Azure Functions, masukkan Nama untuk kelas, lalu pilih Tambahkan.
Pilih pemicu, atur properti pengikatan, lalu pilih Tambahkan. Contoh berikut menunjukkan pengaturan untuk membuat fungsi pemicu penyimpanan Antrean.

Anda kemudian akan diminta untuk memilih antara dua emulator penyimpanan Azure atau mereferensikan akun penyimpanan Azure yang disediakan.
Contoh pemicu ini menggunakan string koneksi dengan nama kunci
QueueStorage. Kunci ini, disimpan dalam file local.settings.json, baik mereferensikan emulator penyimpanan Azure atau akun penyimpanan Azure.Periksa kelas yang baru ditambahkan. Anda melihat metode
Run()statis yang diatributkan dengan atributFunctionName. Atribut ini menunjukkan bahwa metode tersebut adalah titik masuk untuk fungsi.Misalnya, kelas C# berikut mewakili fungsi pemicu penyimpanan Antrean dasar:
using System; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Host; using Microsoft.Extensions.Logging; namespace FunctionApp1 { public static class Function1 { [FunctionName("QueueTriggerCSharp")] public static void Run([QueueTrigger("myqueue-items", Connection = "QueueStorage")]string myQueueItem, ILogger log) { log.LogInformation($"C# Queue trigger function processed: {myQueueItem}"); } } }
Atribut khusus pengikatan diterapkan pada setiap parameter pengikatan yang diberikan ke metode titik masuk. Atribut mengambil informasi pengikatan sebagai parameter. Dalam contoh sebelumnya, parameter pertama memiliki atribut QueueTrigger yang diterapkan, menunjukkan fungsi pemicu penyimpanan Antrean. Nama antrean dan nama pengaturan string koneksi diteruskan sebagai parameter ke atribut QueueTrigger. Untuk informasi selengkapnya, lihat Pengikatan penyimpanan Antrean Azure untuk Azure Functions.
Gunakan prosedur di atas untuk menambahkan lebih banyak fungsi ke proyek aplikasi fungsi Anda. Setiap fungsi dalam proyek dapat memiliki pemicu yang berbeda, tetapi fungsi harus memiliki satu pemicu yang tepat. Untuk mempelajari selengkapnya, lihat Konsep pengikatan dan pemicu Azure Functions.
Menambahkan pengikatan
Seperti halnya pemicu, pengikatan input dan output ditambahkan ke fungsi Anda sebagai atribut pengikatan. Tambahkan pengikatan ke fungsi sebagai berikut:
Pastikan Anda telah mengonfigurasikan proyek untuk pengembangan lokal.
Tambahkan paket ekstensi NuGet yang sesuai untuk pengikatan tertentu dengan menemukan persyaratan paket NuGet khusus pengikatan di artikel referensi untuk pengikatan. Misalnya, temukan persyaratan paket untuk pemicu Azure Event Hubs pada artikel referensi Pengikatan Hub Aktivitas.
Gunakan perintah berikut di Package Manager Console untuk menginstal paket tertentu:
Install-Package Microsoft.Azure.WebJobs.Extensions.<BINDING_TYPE> -Version <TARGET_VERSION>Dalam contoh ini, ganti
<BINDING_TYPE>dengan nama khusus untuk ekstensi pengikatan dan<TARGET_VERSION>dengan versi paket tertentu, seperti3.0.0-beta5. Versi yang valid tercantum pada halaman paket individu di NuGet.org. Versi utama yang sesuai dengan Functions runtime 1.x atau 2.x ditentukan dalam artikel referensi untuk pengikatan.Jika ada pengaturan aplikasi yang dibutuhkan pengikatan, tambahkan ke kumpulan
Valuespada file pengaturan lokal.Fungsi tersebut menggunakan nilai-nilai ini ketika dijalankan secara lokal. Saat fungsi berjalan di aplikasi fungsi di Azure, fungsi ini menggunakan pengaturan aplikasi fungsi.
Tambahkan atribut pengikatan yang sesuai ke metode tanda tangan. Dalam contoh berikut, pesan antrean memicu fungsi, dan pengikatan output membuat pesan antrean baru dengan teks yang sama dalam antrean yang berbeda.
public static class SimpleExampleWithOutput { [FunctionName("CopyQueueMessage")] public static void Run( [QueueTrigger("myqueue-items-source", Connection = "AzureWebJobsStorage")] string myQueueItem, [Queue("myqueue-items-destination", Connection = "AzureWebJobsStorage")] out string myQueueItemCopy, ILogger log) { log.LogInformation($"CopyQueueMessage function processed: {myQueueItem}"); myQueueItemCopy = myQueueItem; } }Koneksi ke penyimpanan Antrean diperoleh dari pengaturan
AzureWebJobsStorage. Untuk informasi selengkapnya, lihat artikel referensi untuk pengikatan khusus.
Untuk daftar lengkap pengikatan data yang didukung oleh Azure Functions, lihat Pengikatan data yang didukung.
Jalankan fungsi secara lokal
Azure Functions Core Tools memungkinkan Anda menjalankan proyek Azure Functions di komputer pengembangan lokal Anda. Saat Anda menekan F5 untuk men-debug proyek Functions, host Functions lokal (func.exe) akan mulai mendengarkan port lokal (biasanya 7071). Setiap titik akhir fungsi yang dapat dipanggil ditulis pada output, dan Anda dapat menggunakannya untuk menguji fungsi Anda. Untuk informasi selengkapnya, lihat Bekerja dengan Azure Functions Core Tools. Anda diminta untuk menginstal alat ini saat pertama kali memulai fungsi dari Visual Studio Code.
Untuk menjalankan fungsi Anda di Visual Studio dalam mode debug:
Tekan F5. Jika diminta, terima permintaan dari Visual Studio untuk mengunduh dan menginstal alat Azure Functions Core (CLI). Anda mungkin perlu mengaktifkan pengecualian firewall agar alat dapat menangani permintaan HTTP.
Saat proyek berjalan, uji kode Anda seperti ketika Anda akan menguji fungsi yang disebarkan.
Saat Anda menjalankan Visual Studio di dalam mode debug, titik henti akan tercapai seperti yang diharapkan.
Untuk skenario pengujian yang lebih rinci menggunakan Visual Studio, lihat Pengujian fungsi.
Menerbitkan ke Azure
Saat Anda menerbitkan dari Visual Studio, aplikasi ini menggunakan salah satu dari dua metode penyebaran:
- Penyebaran Web: Memaketkan dan menyebarkan aplikasi Windows ke semua server IIS.
- Penyebaran Zip dengan paket Jalankan Dari yang aktif: Direkomendasikan untuk penyebaran Azure Functions.
Gunakan langkah-langkah berikut untuk menerbitkan proyek Anda ke aplikasi fungsi di Azure.
Di Penjelajah Solusi, klik kanan proyek dan pilih Terbitkan. Di Target, pilih Azure lalu Berikutnya.
Pilih Aplikasi Azure Function (Windows) untuk Target tertentu, untuk membuat aplikasi fungsi yang berjalan pada Windows, lalu pilih Berikutnya.
Pada Instans Fungsi, pilih Buat Fungsi Azure baru...
Buat instans baru menggunakan nilai yang ditentukan dalam tabel berikut:
Pengaturan Nilai Deskripsi Nama Nama unik global Nama yang mengidentifikasi secara unik aplikasi fungsi baru Anda. Terima nama ini atau masukkan nama baru. Karakter yang valid adalah: a-z,0-9, dan-.Langganan Langganan Anda Langganan Azure yang akan digunakan. Terima langganan ini atau pilih yang baru dari daftar menurun. Grup sumber daya Nama grup sumber daya Anda Grup sumber daya untuk membuat aplikasi fungsi Anda. Pilih grup sumber daya yang sudah ada dari daftar menurun atau pilih Baru untuk membuat grup sumber daya baru. Jenis Paket Consumption Saat Anda menerbitkan proyek Anda ke aplikasi fungsi yang berjalan dalam Paket konsumsi, Anda hanya membayar untuk menjalankan aplikasi fungsi Anda. Paket hosting lain dikenakan biaya yang lebih tinggi. Lokasi Lokasi app service Pilih Lokasi pada wilayah di dekat Anda atau layanan lain yang diakses fungsi Anda. Azure Storage Akun penyimpanan serba guna Akun Azure Storage diperlukan oleh runtime Fungsi. Pilih Baru untuk mengonfigurasi akun penyimpanan serba guna. Anda juga dapat memilih akun yang ada yang memenuhi persyaratan akun penyimpanan.
Pilih Buat untuk membuat aplikasi fungsi dan sumber daya terkait di Azure. Status pembuatan sumber daya ditampilkan di kiri bawah jendela.
Dalam Instans fungsi, pastikan bahwa Jalankan dari file paket telah dicentang. Aplikasi fungsi Anda disebarkan menggunakan Zip Deploy dengan mode Run-From-Package diaktifkan. Penyebaran Zip adalah metode penyebaran yang direkomendasikan untuk proyek fungsi Anda karena menghasilkan performa yang lebih baik.
Pilih Selesai, dan pada halaman Terbitan, pilih Terbitkan untuk menyebarkan paket yang berisi file proyek Anda ke aplikasi fungsi baru di Azure.
Setelah penyebaran selesai, URL akar aplikasi fungsi di Azure diperlihatkan di tab Terbitkan.
Di tab Terbitkan, di bagian Hosting, pilih Buka di portal Azure. Ini membuka sumber daya aplikasi fungsi baru Azure di portal Azure.
Pengaturan aplikasi fungsi
Visual Studio tidak diunggah secara otomatis saat Anda menerbitkan proyek. Pengaturan apa pun yang Anda tambahkan ke local.settings.json juga harus Anda tambahkan ke aplikasi fungsi di Azure.
Cara termudah untuk mengunggah pengaturan yang diperlukan ke aplikasi fungsi Anda di Azure adalah memperluas tiga titik di sebelah bagian Hosting dan pilih tautan Kelola pengaturan Azure App Service yang muncul setelah proyek Anda berhasil diterbitkan.
Memilih tautan ini, menampilkan dialog Pengaturan aplikasi untuk aplikasi fungsi, di mana Anda dapat menambahkan pengaturan aplikasi baru atau memodifikasi yang sudah ada.

Lokal menampilkan nilai pengaturan pada file local.settings.json, dan Jarak Jauh menampilkan nilai pengaturan terkini pada aplikasi fungsi di Azure. Pilih Tambah pengaturan untuk membuat pengaturan aplikasi baru. Gunakan tautan Sisipkan nilai dari Lokal untuk menyalin nilai pengaturan ke bidang Jarak Jauh. Perubahan yang tertunda ditulis ke file pengaturan lokal dan aplikasi fungsi saat Anda memilih OK.
Catatan
Secara default, file local.settings.json tidak dicentang di dalam kontrol kode sumber. Ini berarti bahwa jika Anda membuat kloning proyek Fungsi lokal dari kontrol kode sumber, proyek tidak memiliki file local.settings.json. Dalam hal ini, Anda perlu membuat file local.settings.json secara manual pada akar proyek sehingga dialog Pengaturan aplikasi berfungsi seperti yang diharapkan.
Anda juga dapat mengelola pengaturan aplikasi dengan salah satu cara berikut:
- Menggunakan portal Azure.
- Menggunakan opsi penerbitan
--publish-local-settingsdi Azure Functions Core Tools. - Menggunakan Azure CLI.
Penelusuran Kesalahan Jarak Jauh
Untuk men-debug aplikasi fungsi dari jarak jauh, Anda harus menerbitkan konfigurasi debug proyek Anda. Anda juga perlu mengaktifkan penelusuran kesalahan jarak jauh di aplikasi fungsi Anda di Azure.
Bagian ini mengasumsikan Anda telah menerbitkan ke aplikasi fungsi menggunakan konfigurasi rilis.
Pertimbangan penelusuran kesalahan jarak jauh
- Penelusuran kesalahan jarak jauh tidak disarankan pada layanan produksi.
- Jika Anda mengaktifkan penelusuran kesalahan Just My Code, nonaktifkan.
- Hindari perhentian panjang di titik henti saat penelusuran kesalahan jarak jauh. Azure memperlakukan proses yang dihentikan lebih dari beberapa menit sebagai proses yang tidak responsif, dan mematikannya.
- Saat Anda melakukan penelusuran kesalahan, server akan mengirim data ke Visual Studio, yang dapat memengaruhi biaya bandwidth. Untuk informasi tentang tarif bandwidth, lihat Harga Azure.
- Penelusuran kesalahan jarak jauh secara otomatis dinonaktifkan di aplikasi fungsi Anda setelah 48 jam. Setelah 48 jam, Anda harus mengaktifkan kembali penelusuran kesalahan jarak jauh.
Melampirkan debugger
Cara Anda melampirkan debugger bergantung pada mode eksekusi Anda. Saat melakukan penelusuran kesalahan pada aplikasi proses yang terisolasi, Anda perlu melampirkan debugger jarak jauh ke proses .NET terpisah, dan beberapa langkah konfigurasi lainnya diperlukan.
Setelah selesai, Anda harus menonaktifkan penelusuran kesalahan jarak jauh.
Untuk melampirkan debugger jarak jauh ke aplikasi fungsi yang berjalan dalam proses dengan host Functions:
Dari tab Terbitkan, pilih elipsis (...) di bagian Hosting, lalu pilih Lampirkan debugger.
Visual Studio terhubung ke aplikasi fungsi Anda dan mengaktifkan penelusuran kesalahan jarak jauh, jika belum diaktifkan. Visual Studio juga menemukan dan melampirkan debugger ke proses host untuk aplikasi. Pada titik ini, Anda dapat men-debug aplikasi fungsi seperti biasa.
Menonaktifkan debugging jarak jauh
Setelah selesai melakukan penelusuran kesalahan pada kode Anda dari jarak jauh, Anda harus menonaktifkan penelusuran kesalahan jarak jauh di portal Azure. Penelusuran kesalahan jarak jauh secara otomatis dinonaktifkan setelah 48 jam, jika Anda lupa.
Di tab Terbitkan di proyek Anda, pilih elipsis (...) di bagian Hosting, dan pilih Buka di portal Azure. Tindakan ini membuka aplikasi fungsi di portal Azure tempat proyek Anda disebarkan.
Di aplikasi fungsi, pilih Konfigurasi di bawah pengaturan, pilih Pengaturan Umum, atur Penelusuran Kesalahan Jarak Jauh ke Nonaktif, lalu pilih Simpan lalu Lanjutkan.
Setelah aplikasi fungsi dimulai ulang, Anda tidak dapat lagi terhubung dari jarak jauh ke proses jarak jauh Anda. Anda dapat menggunakan tab yang sama ini di portal Azure untuk mengaktifkan penelusuran kesalahan jarak jauh di luar Visual Studio.
Fungsi pemantauan
Cara yang disarankan untuk memantau eksekusi fungsi Anda adalah dengan mengintegrasikan aplikasi fungsi Anda dengan Azure Application Insights. Saat Anda membuat aplikasi fungsi di portal Azure, integrasi tersebut dilakukan secara default. Namun, saat Anda membuat aplikasi fungsi selama penerbitan Visual Studio, integrasi di aplikasi fungsi Anda di Azure belum selesai. Untuk mempelajari cara menyambungkan Application Insights ke aplikasi fungsi Anda, lihat Mengaktifkan integrasi Application Insights.
Untuk mempelajari selengkapnya tentang pemantauan menggunakan Application Insights, lihat Memantau Azure Functions.
Fungsi pengujian
Bagian berikut menjelaskan cara membuat aplikasi Fungsi C# di Visual Studio dan menjalankan serta melakukan pengujian dengan xUnit.

Siapkan
Untuk menyiapkan lingkungan Anda, buat sebuah fungsi dan lakukan pengujian aplikasi. Langkah-langkah berikut membantu Anda membuat aplikasi dan fungsi yang diperlukan untuk mendukung pengujian:
- Membuat aplikasi fungsi baru dan menamainya Azure Functions
- Buat fungsi HTTP dari templat dan beri nama MyHttpTrigger.
- Buat fungsi timer dari templat dan beri nama MyTimerTrigger.
- Buat aplikas Pengujian xUnit dalam solusi dan beri nama Functions.Tests. Hapus file pengujian default.
- Gunakan NuGet untuk menambahkan referensi dari aplikasi pengujian ke Microsoft.AspNetCore.Mvc
- Referensi aplikasi Fungsi dari aplikasi Functions.Tests.
Membuat kelas pengujian
Sekarang setelah proyek dibuat, Anda dapat membuat kelas yang digunakan untuk menjalankan pengujian otomatis.
Setiap fungsi mengambil instans ILogger untuk menangani pengelogan pesan. Beberapa pengujian tidak mencatat pesan atau tidak peduli bagaimana pengelogan diimplementasikan. Pengujian lain perlu mengevaluasi pesan yang dicatat untuk menentukan apakah pengujian sedang lulus.
Anda akan membuat class baru bernama ListLogger yang menyimpan daftar pesan internal untuk dievaluasi selama pengujian. Untuk mengimplementasikan antarmuka ILogger yang diperlukan, kelas membutuhkan cakupan. Kelas berikut peniruan cakupan untuk kasus pengujian untuk diteruskan ke ListLogger kelas.
Buat kelas baru di project Functions.Tests bernama NullScope.cs dan masukkan kode berikut:
using System;
namespace Functions.Tests
{
public class NullScope : IDisposable
{
public static NullScope Instance { get; } = new NullScope();
private NullScope() { }
public void Dispose() { }
}
}
Selanjutnya, buat kelas baru di project Functions.Tests bernama ListLogger.cs dan masukkan kode berikut:
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace Functions.Tests
{
public class ListLogger : ILogger
{
public IList<string> Logs;
public IDisposable BeginScope<TState>(TState state) => NullScope.Instance;
public bool IsEnabled(LogLevel logLevel) => false;
public ListLogger()
{
this.Logs = new List<string>();
}
public void Log<TState>(LogLevel logLevel,
EventId eventId,
TState state,
Exception exception,
Func<TState, Exception, string> formatter)
{
string message = formatter(state, exception);
this.Logs.Add(message);
}
}
}
Kelas ListLogger mengimplementasikan anggota berikut yang dikontrak oleh ILogger antarmuka:
BeginScope: Cakupan menambahkan konteks ke pengelogan Anda. Dalam hal ini, pengujian hanya menunjuk ke instans statik pada
NullScopekelas untuk memungkinkan pengujian berfungsi.IsEnabled: Nilai default
falsedisediakan.Log: Metode ini menggunakan fungsi yang
formatterdisediakan untuk memformat pesan lalu menambahkan teks yang dihasilkan keLogskoleksi.
Koleksi Logs adalah instans List<string> dan diinisialisasi dalam konstruktor.
Selanjutnya, buat kelas baru di project Functions.Tests bernama ListLogger.cs dan masukkan kode berikut:
namespace Functions.Tests
{
public enum LoggerTypes
{
Null,
List
}
}
Enumerasi ini menentukan jenis pencatat yang digunakan oleh pengujian.
Sekarang buat kelas baru di project Functions.Tests bernama ListLogger.cs dan masukkan kode berikut:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Internal;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Primitives;
using System.Collections.Generic;
namespace Functions.Tests
{
public class TestFactory
{
public static IEnumerable<object[]> Data()
{
return new List<object[]>
{
new object[] { "name", "Bill" },
new object[] { "name", "Paul" },
new object[] { "name", "Steve" }
};
}
private static Dictionary<string, StringValues> CreateDictionary(string key, string value)
{
var qs = new Dictionary<string, StringValues>
{
{ key, value }
};
return qs;
}
public static HttpRequest CreateHttpRequest(string queryStringKey, string queryStringValue)
{
var context = new DefaultHttpContext();
var request = context.Request;
request.Query = new QueryCollection(CreateDictionary(queryStringKey, queryStringValue));
return request;
}
public static ILogger CreateLogger(LoggerTypes type = LoggerTypes.Null)
{
ILogger logger;
if (type == LoggerTypes.List)
{
logger = new ListLogger();
}
else
{
logger = NullLoggerFactory.Instance.CreateLogger("Null Logger");
}
return logger;
}
}
}
Kelas TestFactory mengimplementasikan anggota berikut:
Data: Properti ini mengembalikan kumpulan data sampel IEnumerable. Pasangan nilai kunci mewakili nilai yang diteruskan ke dalam untai kueri.
CreateDictionary: Metode ini menerima pasangan kunci/nilai sebagai argumen dan mengembalikan yang baru digunakan
Dictionaryuntuk membuatQueryCollectionuntuk mewakili nilai untai kueri.CreateHttpRequest: Metode ini membuat permintaan HTTP yang diinisialisasi dengan parameter untai kueri yang diberikan.
CreateLogger: Berdasarkan jenis pencatat, metode ini mengembalikan kelas pencatat yang digunakan untuk pengujian. Melacak
ListLoggerpesan yang dicatat tersedia untuk dievaluasi dalam pengujian.
Sekarang buat kelas baru di project Functions.Tests bernama ListLogger.cs dan masukkan kode berikut:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Xunit;
namespace Functions.Tests
{
public class FunctionsTests
{
private readonly ILogger logger = TestFactory.CreateLogger();
[Fact]
public async void Http_trigger_should_return_known_string()
{
var request = TestFactory.CreateHttpRequest("name", "Bill");
var response = (OkObjectResult)await MyHttpTrigger.Run(request, logger);
Assert.Equal("Hello, Bill. This HTTP triggered function executed successfully.", response.Value);
}
[Theory]
[MemberData(nameof(TestFactory.Data), MemberType = typeof(TestFactory))]
public async void Http_trigger_should_return_known_string_from_member_data(string queryStringKey, string queryStringValue)
{
var request = TestFactory.CreateHttpRequest(queryStringKey, queryStringValue);
var response = (OkObjectResult)await MyHttpTrigger.Run(request, logger);
Assert.Equal($"Hello, {queryStringValue}. This HTTP triggered function executed successfully.", response.Value);
}
[Fact]
public void Timer_should_log_message()
{
var logger = (ListLogger)TestFactory.CreateLogger(LoggerTypes.List);
new MyTimerTrigger().Run(null, logger);
var msg = logger.Logs[0];
Assert.Contains("C# Timer trigger function executed at", msg);
}
}
}
Anggota yang diimplementasikan di kelas ini adalah:
Http_trigger_should_return_known_string: Pengujian ini membuat permintaan dengan nilai untai kueri
name=Billke fungsi HTTP dan memeriksa bahwa respons yang diharapkan dikembalikan.Http_trigger_should_return_string_from_member_data: Pengujian ini menggunakan atribut xUnit untuk memberikan data sampel ke fungsi HTTP.
Timer_should_log_message:Pengujian ini membuat instans
ListLoggerdan meneruskannya ke fungsi timer. Setelah fungsi dijalankan, maka log diperiksa untuk memastikan pesan yang diharapkan ada.
Jika Anda ingin mengakses pengaturan aplikasi dalam pengujian, Anda dapat menyuntikkan instans IConfiguration dengan nilai variabel lingkungan yang ditiru dalam fungsi Anda.
Jalankan pengujian
Untuk menjalankan pengujian, navigasikan ke Test Explorer dan pilih Jalankan Semua Pengujian di Tampilan.

Pengujian debug
Untuk men-debug pengujian, atur titik henti pada pengujian, navigasi ke Test Explorer dan pilih Jalankan> Debug Jalankan Terakhir.
Alat Azure Functions dengan Visual Studio 2017
Alat Azure Functions tersedia dalam beban kerja pengembangan Azure yang dimulai dengan Visual Studio 2017. Di Visual Studio 2017, beban kerja pengembangan Azure menginstal Alat Azure Functions sebagai ekstensi terpisah. Pada Visual Studio 2019 dan versi yang lebih baru, ekstensi alat Azure Functions diperbarui sebagai bagian dari Visual Studio.
Saat Memperbarui penginstalan Visual Studio 2017, pastikan Anda menggunakan versi terbaru dari Alat Azure Functions. Bagian berikut ini memperlihatkan cara memeriksa dan (jika diperlukan) memperbarui ekstensi Alat Azure Functions di Visual Studio 2017.
Memeriksa versi alat Anda pada Visual Studio 2017
Dari menu Alat, pilih Ekstensi dan Pembaruan. Perluas Alat>Terinstal, lalu pilih Azure Functions and Web Jobs Tools.

Catat Versi yang terinstal dan bandingkan versi ini dengan versi terbaru yang tercantum dalam catatan rilis.
Jika versi Anda lebih lama, perbarui alat di Visual Studio seperti yang ditunjukkan di bagian berikut ini.
Memperbarui alat di Visual Studio 2017
Dalam dialog Ekstensi dan Pembaruan, perluas Pembaruan>Visual Studio Marketplace, pilih Azure Functions and Web Jobs Tools, kemudian pilih Perbarui.

Setelah pembaruan alat diunduh, pilih Tutup, lalu tutup Visual Studio untuk memicu pembaruan alat dengan Alat Penginstal VSIX.
Pada Alat Penginstal VSIX, pilih Ubah untuk memperbarui alat.
Setelah pembaruan selesai, pilih Tutup, lalu hidupkan ulang Visual Studio.
Langkah berikutnya
Untuk informasi selengkapnya tentang Azure Functions Core Tools, lihat Bekerja dengan Azure Functions Core Tools.
Untuk informasi selengkapnya tentang mengembangkan fungsi sebagai pustaka kelas .NET, lihat Referensi pengembang C# Azure Functions. Artikel ini juga terkait ke beberapa contoh penggunaan atribut untuk menyatakan berbagai jenis pengikatan yang didukung oleh Azure Functions.


