Caso já tenha precisado executar testes de integração sobre um SQL Server em um workflow/pipeline Linux no GitHub Actions ou no Azure DevOps, deve ter percebido que ele não vem instalado nesses serviços.
Infelizmente o LocalDB, versão light do SQL Server voltada para desenvolvimento, só existe para Windows. Este sim já vem instalado nos hosts Windows do GitHub Actions e Azure DevOps, podendo ser usado facilmente nos testes.
Mas existe uma saída. Basta executar a instação do SQL Server direto no seu fluxo de trabalho, antes da execução dos testes:
name: Testes
on:
workflow_dispatch:
jobs:
testes:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Instalar Sql Server
run: |
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
sudo apt-get update
sudo apt-get install -y mssql-server
sudo MSSQL_SA_PASSWORD='Senh@Aqu1' MSSQL_PID=developer /opt/mssql/bin/mssql-conf -n setup accept-eula
- name: Testar aplicação
run: dotnet test
Lembrando que é preciso ajustar a string de conexão dos testes para utilizar o usuário SA
e a senha definida no trecho MSSQL_SA_PASSWORD='Senh@Aqu1'
(esta senha precisa conter letra maiúscula, minúscula, dígito e caracter especial).
Exemplo (considerando um DbContext de EF que tenha um construtor que recebe a Connection String):
var db = new Db($"Data Source=localhost;Initial Catalog=Tests-{Guid.NewGuid()};User Id=SA;Password=Senh@Aqu1;");