Я занимаюсь тестовой разработкой в Юлии. Тест ожидает определенного исключения. Как вывести ожидаемое исключение?
Я перебираю строку и подсчитываю вхождение конкретных букв. Любая буква, кроме «A», «C», «G» или «T», должна приводить к исключению
Запуск Julia версии 1.2.0.
Я пробовал следующие варианты:
throw(DomainError())
throw(DomainError)
throw("DomainError")
Я ожидал, что они будут работать на основе этого ресурса: https://scls.gitbooks.io/ljthw/content/_chapters/11-ex8.html
Вот ссылка на проблему, которую я пытаюсь решить: https://exercism.io/my/solutions/781af1c1f9e2448cac57c0707aced90f
(Заголовок: эта ссылка может быть уникальной для моего логина)
Мой код:
function count_nucleotides(strand::AbstractString)
Counts = Dict()
Counts['A'] = 0
Counts['C'] = 0
Counts['G'] = 0
Counts['T'] = 0
for ch in strand
# println(ch)
if ch=='A'
Counts['A'] += 1
# Counts['A'] = Counts['A'] + 1
elseif ch=='C'
Counts['C'] += 1
elseif ch=='G'
Counts['G'] += 1
elseif ch=='T'
Counts['T'] += 1
else
throw(DomainError())
end
end
return Counts
end
Тест:
@testset "strand with invalid nucleotides" begin
@test_throws DomainError count_nucleotides("AGXXACT")
end
Мой отчет об ошибках, см. Строки с: Ожидаемый и Брошенный.
strand with invalid nucleotides: Test Failed at /Users/username/Exercism/julia/nucleotide-count/runtests.jl:18
Expression: count_nucleotides("AGXXACT")
Expected: DomainError
Thrown: MethodError
Stacktrace:
[1] top-level scope at /Users/shane/Exercism/julia/nucleotide-count/runtests.jl:18
[2] top-level scope at /Users/juliainstall/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.2/Test/src/Test.jl:1113
[3] top-level scope at /Users/username/Exercism/julia/nucleotide-count/runtests.jl:18
Test Summary: | Fail Total
strand with invalid nucleotides | 1 1
ERROR: LoadError: Some tests did not pass: 0 passed, 1 failed, 0 errored, 0 broken.