2016-11-25 7 views
5

के भीतर ExUnit परीक्षण कैसे चलाएं I परीक्षण के भीतर IEx.pry लॉन्च करने का प्रयास कर रहा हूं। हालांकि मैं एक आईईएक्स सत्र के भीतर परीक्षण चलाने के लिए नहीं मिल सकता है। ध्यान दें कि मैं मिश्रण का उपयोग नहीं कर रहा हूँ।आईईएक्स

[email protected]:~/exercism/elixir/nucleotide-count$ iex test.exs    
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false] 

Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help) 
iex(1)> ExUnit.run 
** (exit) exited in: GenServer.call(ExUnit.Server, {:take_async_cases, 8}, 60000) 
** (EXIT) time out 
(elixir) lib/gen_server.ex:604: GenServer.call/3 
(ex_unit) lib/ex_unit/runner.ex:71: ExUnit.Runner.loop/2 
(stdlib) timer.erl:166: :timer.tc/1 
(ex_unit) lib/ex_unit/runner.ex:13: ExUnit.Runner.run/2 

कोड सही ढंग से भरी हुई है और मैं इसे सीधे आह्वान कर सकते हैं TheTest."test adds two numbers"({}) साथ:

ExUnit.start 

defmodule Calc do 
    def add(a,b) do 
    a + b 
    end 
end 

defmodule TheTest do 
    use ExUnit.Case 

    test "adds two numbers" do 
    require IEx 
    IEx.pry 
    assert Calc.add(1, 2) == 3 
    end 
end 

मैं ExUnit.run रुक जाता है और अंत में कई बार बाहर के साथ इसे चलाने का प्रयास करें। लेकिन मैं पूरे सूट को लॉन्च करने की उम्मीद कर रहा था।

+2

आप 'मिश्रण' का उपयोग क्यों नहीं कर रहे हैं? – Simone

+0

आपको यह सहायक http://stackoverflow.com/questions/29671156/pry-while-testing – Simone

+0

मिल सकता है मेरा मानना ​​है कि आप 'मिश्रण' का उपयोग नहीं कर रहे हैं, इसलिए आपको 'ExUnit' सर्वर एप्लिकेशन को शुरू करने के लिए पर्याप्त बहादुर होना चाहिए। – mudasobwa

उत्तर

4

मुझे लगता है कि आप mix का उपयोग नहीं कर रहे हैं। आप उन लोगों के साथ चलाने से पहले ExUnit सर्वर से परीक्षण मामलों लोड करने के लिए की जरूरत है:

ExUnit.Server.cases_loaded() 

तो कोड आप iex में लिखना चाहिए किया जाना चाहिए:

ExUnit.start() 

defmodule Calc do 
    def add(a,b) do 
    a + b 
    end 
end 

defmodule TheTest do 
    use ExUnit.Case 

    test "adds two numbers" do 
    require IEx 
    IEx.pry() 
    assert Calc.add(1, 2) == 3 
    end 
end 

ExUnit.Server.cases_loaded() 

ExUnit.run() 

मुझे आशा है कि इस मदद करता है।

0

ExUnit documentation के अनुसार, ExUnit.run/0 केवल तभी उपयोग किया जाना चाहिए जब आप ExUnit.start/1 पर कॉल करते समय अपने परीक्षणों को ऑटोस्टार्ट नहीं करना चाहते हैं।

आपको हमेशा ExUnit.start() पर कॉल करना होगा जो स्वचालित रूप से सभी परीक्षणों को तब तक चलाएगा जब तक कि आप autorun: false पास न करें।

संबंधित मुद्दे